/*jslint laxbreak: true, eqeqeq: true, browser: true, undef: true */
/*extern $, $E, XHR, XMLHTTP, Json, Fx, metaData, pageLoad, player */

/* Basic features. */

function loadClip(clipID)
{
	player.skipTo(clipID);
}

var prepareClips = function(lmnt, clss)
{
	var clips = lmnt.getElementsByTagName("a");
	for (var i = 0; i < clips.length; i++)
	{
		if (clips[i].tagName === "A")
		{
			if (clips[i].className.search(clss) > -1)
			{
				// Set clipID
				if (clips[i].id !== null && clips[i].id !== "")
				{
					clips[i].clipID = clips[i].id.replace(/clip_/, ""); //  x++;
				}
				// Remember original background color of each clip
				if (clips[i].style.background)
				{
					clips[i].originalBackground = clips[i].style.background;
				}
				// Or set it as none
				else
				{
					clips[i].originalBackground = "none";
				}
				// Set it's initial highlight state
				clips[i].highlighted = false;
				// Change background color on mouse over
				clips[i].onmouseover = function()
				{
					this.className = this.className + " uplayerClipHover";
				};
				// Change background color back on mouse out
				clips[i].onmouseout = function()
				{
						this.className = this.className.replace(/uplayerClipHover/, "");
				};
				// Load clip on click
				clips[i].onclick = function()	
				{
					loadClip(this.clipID);
					this.blur();
					return false;
				};
			}
		}
	}
};

var uplayerRenderMetaData = function(metaData)
{
	var h3;
	var ol;
	var li;
	var a;
	var x;
	var container;
	var newContent;
	
	var preUrl = (typeof(window.playerBaseUrl) !== "undefined") ? window.playerBaseUrl : "";
	
	container = document.getElementById("uplayerClipMetaData");
	newContent = document.createElement("div");
	
	// dr.dk-tv link
	if (metaData.nettvlink)
	{
		h3 = document.createElement("h3");
		h3.appendChild(document.createTextNode("dr.dk tv"));
		h3.className = "uplayerMetaDataNetTV";
		newContent.appendChild(h3);
  	ol = document.createElement("ol");
		li = document.createElement("li");
		li.className = "uplayerMetaDataListItem";
		a = document.createElement("a");
		a.href = "#";
		a.appendChild(document.createTextNode("Hele udsendelsen"));
/*jslint evil:true*/
		a.onclick = function() { return eval("(function(){" + metaData.nettvlink + "})()"); };
/*jslint evil:false*/
		/*function()
		{
			window.open(
				'http://www.dr.dk/odp/check.html?uniqueid=D7C084E0-19DB-4131-8FB0-347755C011A7&mt=programstab&st=&furl=http%3A//www.dr.dk/odp/default.aspx%3Ftemplate%3Dprogramserie%26guid%3D3975AA2F-D06B-4A99-BD9B-99BE197DB000%26autoplay%3D1%26back%3Ddefault.aspx%253ftemplate%253dprogrammer%23c0&surl=http%3A//www.dr.dk/Forms/Published/PlaylistGen.aspx%3Fqid%3D524855%26odp%3Dtrue',
				'player',
				'resizable=false,statusbar=false,width=818,height=508'
			).focus();
			return false;
		}*/
		li.appendChild(a);
		ol.appendChild(li);
		newContent.appendChild(ol);
  }
  
  // Related clips
	if (metaData.related.length > 0)
	{
		h3 = document.createElement("h3");
		h3.appendChild(document.createTextNode("Relaterede klip"));
		h3.className = "uplayerMetaDataRelatedClips";
		newContent.appendChild(h3);
  	ol = document.createElement("ol");
  	for (x = 0; x < metaData.related.length; x++)
  	{
  		li = document.createElement("li");
  		li.className = "uplayerMetaDataListItem";
  		a = document.createElement("a");
  		a.href = preUrl + "?i=" + metaData.related[x].id;
  		a.appendChild(document.createTextNode(metaData.related[x].title));
  		li.appendChild(a);
  		ol.appendChild(li);
  	}
  	newContent.appendChild(ol);
  }
  
  // Category
	if (metaData.categories.length > 0 && metaData.categories[0].id !== 77)
	{
		h3 = document.createElement("h3");
		h3.appendChild(document.createTextNode("Se flere klip om"));
		h3.className = "uplayerMetaDataClipCategories";
		newContent.appendChild(h3);
  	ol = document.createElement("ol");
  	for (x = 0; x < metaData.categories.length; x++)
  	{
  		li = document.createElement("li");
  		li.className = "uplayerMetaDataCategory";
  		a = document.createElement("a");
  		a.href = preUrl + "?c=" + metaData.categories[x].id;
  		a.appendChild(document.createTextNode(metaData.categories[x].name));
  		li.appendChild(a);
  		ol.appendChild(li);
  	}
  	newContent.appendChild(ol);
  }
  
  // Internal links
	if (metaData.int_links.length > 0)
	{
		h3 = document.createElement("h3");
  	h3.appendChild(document.createTextNode("Andet på dr.dk"));
  	h3.className = "uplayerMetaDataInternalLinks";
  	newContent.appendChild(h3);
  	ol = document.createElement("ol");
  	for (x = 0; x < metaData.int_links.length; x++)
  	{
  		li = document.createElement("li");
  		a = document.createElement("a");
  		a.href = metaData.int_links[x].url;
  		a.target = "_top";
  		a.appendChild(document.createTextNode(metaData.int_links[x].text));
  		li.appendChild(a);
  		ol.appendChild(li);
  	}
  	newContent.appendChild(ol);
  }
  
  // External links
	if (metaData.ext_links.length > 0)
	{
		h3 = document.createElement("h3");
  	h3.appendChild(document.createTextNode("Links"));
  	h3.className = "uplayerMetaDataExternalLinks";
  	newContent.appendChild(h3);
  	ol = document.createElement("ol");
  	for (x = 0; x < metaData.ext_links.length; x++)
  	{
  		li = document.createElement("li");
  		a = document.createElement("a");
  		a.href = metaData.ext_links[x].url;
  		a.target = "_blank";
  		a.appendChild(document.createTextNode(metaData.ext_links[x].text));
  		li.appendChild(a);
  		ol.appendChild(li);
  	}
  	newContent.appendChild(ol);
  }
  
	$(newContent).setStyle("opacity", 0);
	$(container).setStyles({height: $E('#uplayerClipMetaData div').getCoordinates().height, overflow: "hidden"});
  
  // replace content
  var fx1 = $E('#uplayerClipMetaData div').effects({duration: 500, transition: Fx.Transitions.Quart.easeOut});
  var fx2 = $(container).effects({duration: 500, transition: Fx.Transitions.Quart.easeOut});
  var fx3 = $(newContent).effects({duration: 1000, transition: Fx.Transitions.Quart.easeOut});
  fx1.start({
  	opacity: 0
  }).chain(function()
  {
  	$("uplayerClipMetaData").removeChild($E('#uplayerClipMetaData div'));
  	$("uplayerClipMetaData").appendChild(newContent);
  	fx2.start({
  		height: $(newContent).getStyle("height")
  	}).chain(function()
  	{
  		fx3.start({
  			opacity: 1
  		});
	});
  });
};


var uplayerGetMetaData = false;

var uplayerRenderTitleDescription = function(metaData)
{
	var fx = $('uplayerClipDescription').effects({duration: 1000, transition: Fx.Transitions.Quart.easeOut});
	fx.start({
  	opacity: 0
  }).chain(function()
  {
  	$E("#uplayerClipDescription h2").setText(metaData.title);
  	$E("#uplayerClipDescription p").setText(metaData.manchet);
		this.start({
  		opacity: 1
  	});
  });	
};


var uplayerUpdateMetaData = function(textData, xmlData)
{
	metaData = Json.evaluate(textData);
	
	if ($("uplayerClipMetaData"))
	{
		uplayerRenderMetaData(metaData);
	}
	if ($("uplayerClipDescription"))
	{
		uplayerRenderTitleDescription(metaData);
	}
	var scroll = new Fx.Scroll(window, {
		wait: false,
		duration: 1500,
		offset: {'x': 0, 'y': -200},
		transition: Fx.Transitions.Quad.easeInOut
	});
	scroll.toElement($('uplayer'));
};


// reference to current clip
var uplayerCurrentClip = false;

var highlight = function(clipID)
{
	if (uplayerCurrentClip)
	{
		uplayerCurrentClip.highlighted = false;
		uplayerCurrentClip.className = uplayerCurrentClip.className.replace(/uplayerClipHighlighted/, "");
	}
	uplayerCurrentClip = document.getElementById("clip_" + clipID);

	if (!uplayerCurrentClip) {
		return;
	}

	uplayerCurrentClip.className = uplayerCurrentClip.className + " uplayerClipHighlighted";
	uplayerCurrentClip.highlighted = true;
	if (document.getElementById("uplayerTipFriendClipID"))
	{
		document.getElementById("uplayerTipFriendClipID").value = uplayerCurrentClip.href.substr(uplayerCurrentClip.href.indexOf("#") + 6);
	}
	
	// Get meta data
	
	if (uplayerGetMetaData)
	{
		var req_url = "/php/ung/uplayer/xmlservice/?i=" + uplayerCurrentClip.href.substr(uplayerCurrentClip.href.indexOf("#") + 6);
		var req = new XHR({
				method: 'get',
				onSuccess: uplayerUpdateMetaData
	  }).send(req_url);
	}
};

var uplayerHighlightFirst = function()
{
	highlight(0);
};

window.addEvent("domready", uplayerHighlightFirst);



/* Advanced features. */




/* E-mail functions. Deprecated. Has been moved inside the flash player. */

function downtime() 
{
	document.getElementById('loading').innerHTML = '';
	document.getElementById('uplayerMailStatus').innerHTML = 'Fejl! Mailserver desværre nede.';
}

var ajaxObj = new XMLHTTP("/php/ung/uplayer/sendtilven/mybic_server.php");
// lets turn on debugging so we can see what we're sending and receiving
ajaxObj.debug=0;
ajaxObj.abort_timeout = 2000;
ajaxObj.net_down_func = downtime;

function sendtilven()
{
	document.getElementById('uplayerMailStatus').innerHTML = '<img src="http://www.dr.dk/skum/uplayer/gfx/flemming_ajax.gif" alt="" />';	
	ajaxObj.format = "TEXT"; // this means I don't want any encoding on the return data
	var form_vars = ajaxObj.getForm('Form1');  // pass in my comments form id and it will loop through my form for me
	ajaxObj.call('action=mailtofriend'+form_vars, status);
}

function status(resp) 
{
	if(resp) 
	{
		document.getElementById('uplayerMailStatus').innerHTML = resp;
	}
	else 
	{
		document.getElementById('uplayerMailStatus').innerHTML = 'Fejl! Kan ikke sende mails lige nu.';
	}
}





