/**
 * Eva Avatar
 * @author Jon Ege Ronnenberg (logicLAB)
 * @version 1.1
 */
//Configuration
var avatarConfig = {

	url: '/service/proxyreq/eva/xmleva.jsp',
	flashPath: 'https://static.telia.dk/flash/eva/'
}; 
jQuery(function($){
	
jQuery.namespace("Telia.Avatar.AppData");
	Telia.Avatar.showAnswer = function(data, success){
		
		dataorig = data;
		data = data.savedreply.reply;		
		//var sxhr = this.xhr();
		jQuery("#eva-result").slideUp("normal");
		jQuery("#eva-result").queue(function(){
			jQuery(this).empty();
			var answer = data.answer;
			var question;
			if (data.officialQuestion) {
				question = data.officialQuestion;
			} else if (dataorig.questionText && dataorig.questionText[0]) {
				question = dataorig.questionText[0];
			} else {
				question = '';
			}
			jQuery(this).data("id", data.statementId);
			jQuery(this).append("<p><strong>" + question + "</strong></p>");			
			jQuery(this).append("<p>" + answer + "</p>");
			if (data.links) {
				var tmpString = "<ol>";
				for (var link in data.links.link) {
					if(data.links.link[link].pushType === 22){
						tmpString += "<li><a rel='external' href='" +
							data.links.link[link].url +
							"'>" +
							data.links.link[link].titleText +
							"</a></li>";	
					} else {
						tmpString += "<li><a href='" +
							data.links.link[link].url +
							"'>" +
							data.links.link[link].titleText +
							"</a></li>";
					}
				}
				tmpString += "</ol>";
				jQuery(this).append(tmpString);
			}
			
			if (typeof data.statements != 'undefined' && typeof data.statements.string != 'undefined') {
				if (data.statements.string.length != 1) {
					// there is more than one extra question. The first one is already displayed - data format sucks
					var tmpString = "<p>Mente du:</p>";
					tmpString += "<ul>";
					var answers = new Dictionary();
					var normalizedId;
					for (var i = 1; i < data.statements.string.length; i++) {
						normalizedId = typeof data.statementIds.int != 'undefined' ? data.statementIds.int[i] : data.statementIds[0].int[i];
						tmpString += "<li><a href='#' id='q" +
							normalizedId +
							"'>" +
							data.statements.string[i] +
							"</a></li>";
						answers.add("q" + normalizedId, data.statements.string[i]);
					}
					tmpString += "</ul>";
					jQuery(this).append(tmpString);
					
					// save the questions in memory - the jQuery.data method seems to conflict with Mootools
					Telia.Avatar.AppData.answers = answers;
					// attach click events to the links
					jQuery("#eva-result li a[id]").click(function(e){
						e.preventDefault();
						/*	DEBUG 
						console.log(this.id);
						console.log(Telia.Avatar.AppData.answers.item(this.id));
						*/
						jQuery("#question").val(Telia.Avatar.AppData.answers.item(this.id));
						$.getJSON(avatarConfig.url, $("#eva form").serialize(), Telia.Avatar.showAnswer);
					});
				}
			}
			jQuery(this).dequeue();
			// slide down to fit the image/flash
//			jQuery("#eva-avatar").animate({ height:162, queue: false });
			//apply external links before shown
			applyExternalLinks();
			// remove old flash embed
	//		jQuery("#eva-avatar").html("");
			// change flash file
			var path = avatarConfig.flashPath + data.image.name;
	/*		jQuery("#eva-avatar").html(insertFlash(
				{
					src: path,
					height: 150,
					width: 180,
					data: path,	
					params: [	
						{ name: 'wmode', value:'transparent' },	
						{ name: 'movie', value: path }
					],
					image: {
						alt: 'Spørg Eva',
						src: 'https://static.telia.dk/flash/eva/fallbacks/' + data.image.name.match(/.*[^.swf]/) + ".png"
					},
					cssClass: 'max'
				},
				{ update: false }
			));
*/

			jQuery("#eva-result").slideDown("normal");
			jQuery("#button_ask").attr("disabled", "");
			jQuery("#question").select();
		});
	};
	/**
	 * Set all links with the attribute rel=external to open in a new window (or tab)
	 */
	function applyExternalLinks(){
		jQuery("a[rel=external]").click(function(e){
			this.target = "_blank";
		});
	}
	
	function insertFlash(htmlOptions){
        var objTag = '<object type="application/x-shockwave-flash"' +
        	' data="' + htmlOptions.data + '" width="' + htmlOptions.width +
			'" height="' + htmlOptions.height + '" class="' + htmlOptions.cssClass + '">';
        for (var i = 0; i < htmlOptions.params.length; i++) {
            objTag += '<param name="' + htmlOptions.params[i].name + '" value="' + htmlOptions.params[i].value + '"/>';
        }
        objTag += '<img src="' + htmlOptions.image.src + '" width="' + htmlOptions.width + '" height="' + htmlOptions.width + '" alt="' + htmlOptions.image.alt + '" />';
		objTag += '</object>';
		return objTag;
	}
	
	// attach submit handler (main)
	jQuery("#eva form").submit(function(e){
		e.preventDefault();
		jQuery("#button_ask").attr("disabled", "disabled");
		
		jQuery.ajax({
			data: jQuery("#eva form").serialize(),
			dataType: 'json',
			error: function(xhr, status, err){
//				jQuery("#eva-avatar").html("<img src='https://static.telia.dk/images/eva/eva_error.png' alt='Eva har i øjeblikket tekniske problemer' />");
			},
			success: Telia.Avatar.showAnswer,
			url: avatarConfig.url
		});
	});
});
