// General Javascript functions for the Digital Store

try
{
	function $(v)
	{
		return document.getElementById(v);
	}
}
catch(e) {}

function searchTog(el)
{
	var google = document.getElementById('cn_search_cont_google');
	var vod = document.getElementById('cn_search_cont');

	if (el == 'google')
	{
		google.style.display = 'block';
		vod.style.display = 'none';
	}
	if (el == 'vod')
	{
		google.style.display = 'none';
		vod.style.display = 'block';
	}
}
function nextDownload()
{
	var downloadFix = document.getElementById('cn_download_fix');
	var downloadHowto = document.getElementById('cn_download_howto');

	downloadHowto.style.display = 'none';
	downloadFix.style.display = 'block';
}
function prevDownload()
{
	var downloadFix = document.getElementById('cn_download_fix');
	var downloadHowto = document.getElementById('cn_download_howto');

	downloadHowto.style.display = 'block';
	downloadFix.style.display = 'none';
}
function viewport_width()
{
	return self.innerWidth || (document.documentElement.clientWidth || document.body.clientWidth);
}

function viewport_height()
{
	return self.innerHeight || (document.documentElement.clientHeight || document.body.clientHeight);
}

function scrollsize_height()
{
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2)
	{
		return document.body.scrollHeight;
	}
	else
	{
		return document.body.offsetHeight;
	}
}

function scrollsize_width()
{
	return self.scrollWidth || (document.documentElement.scrollWidth || document.body.scrollWidth);
}

function my_scroll_top()
{
	return self.scrollTop || (document.documentElement.scrollTop || document.body.scrollTop);
}

function viewport_size()
{
	return { width: viewport_width(), height: viewport_height() };
}

function hide_adwrapper()
{
	var hadwrapper = document.getElementById('hide_adwrapper');
	if (hadwrapper)
	{
		if (hadwrapper.style.visibility = 'visible')
		{
			hadwrapper.style.visibility = 'hidden';
		}
	}
}

function show_adwrapper()
{
	var hadwrapper = document.getElementById('hide_adwrapper');
	if (hadwrapper)
	{ 
		if (hadwrapper.style.visibility = 'hidden')
		{
			hadwrapper.style.visibility = 'visible';
		}
	}
}

function hide_naughty_wmps()
{
	var wmps = new Array('wmp_vid_player', 'fl_vid_player');

	for (var i = 0; i < wmps.length; i++)
	{
		var owmps = document.getElementById(wmps[i]);
		if (owmps)
		{
			owmps.style.visibility='hidden';
		}
	}		
}

function reveal_naughty_wmps()
{
	var wmps = new Array('wmp_vid_player', 'fl_vid_player');
		
	for (var i = 0; i < wmps.length; i++)
	{
		var owmps = document.getElementById(wmps[i]);
		if (owmps)
		{
			owmps.style.visibility='visible';
		}
	}	
}

function hide_naughty_iframes()
{
	var adFrames = new Array("2894", "2892");
	for (var h = 0; h < adFrames.length; h++)
	{
		if (document.getElementById(adFrames[h]))
		{
			var hideIt = true;
			var oIframe = document.getElementById(adFrames[h]);
			var oDoc = oIframe.contentWindow || oIframe.contentDocument;
			if (oDoc.document)
			{
				oDoc = oDoc.document;
				var params = oDoc.getElementsByTagName('param');
				for (var j = 0; j < params.length; j++)
				{
					if (params[j].name == 'wmode' || params[j].name == 'WMODE')
					{
						hideIt = false;
					}
				}
				if (hideIt)
				{
					document.getElementById(adFrames[h]).style.visibility = 'hidden';
				}
			}
		}
	}
}

function reveal_naughty_iframes()
{
	var adFrames = new Array("2894","2892");
	for (var h = 0; h < adFrames.length; h++)
	{
		if (document.getElementById(adFrames[h]))
		{
			var showIt = true;
			var oIframe = document.getElementById(adFrames[h]);
			var oDoc = oIframe.contentWindow || oIframe.contentDocument;
			if (oDoc.document)
			{
				oDoc = oDoc.document;
				var params = oDoc.getElementsByTagName('param');
				for (var j = 0; j < params.length; j++)
				{
					if (params[j].name == 'wmode' || params[j].name == 'WMODE')
					{
						showIt = false;
					}
				}
				if (showIt)
				{
					document.getElementById(adFrames[h]).style.visibility = 'visible';
				}
			}
		}
	}
}

function hide_naughty_tags()
{
	var types = ['embed'];

	for (var i=0;i<types.length;i++)
	{
		var tags = document.getElementsByTagName(types[i]);
		for (var j=0;j<tags.length;j++)
		{
			var tag = tags[j];
			if (tag.style.visibility = 'visible')
			{
				tag.style.visibility = 'hidden';
				tag.setAttribute('forced_hidden',true);
			}
		}
	}
}

function reveal_naughty_tags()
{
	var types = ['embed'];

	for (var i=0;i<types.length;i++)
	{
		var tags = document.getElementsByTagName(types[i]);
		for (var j=0;j<tags.length;j++)
		{
			var tag = tags[j];
			if (tag.getAttribute('forced_hidden'))
			{
				tag.style.visibility = 'visible';
				tag.setAttribute('forced_hidden',false);
			}
		}
	}
}

function hide_modal(mCont)
{
	var modalCont = $(mCont);
	var modalCover = $('modal_cover');
	reveal_naughty_iframes();
	reveal_naughty_wmps();
	reveal_naughty_tags();
	show_adwrapper();

	var iFrame = document.getElementsByTagName('iframe');

	for (f = 0; f < iFrame.length; f++)
	{
		iFrame[f].src = iFrame[f].src.replace(/#[A-Za-z0-9]*$/, ''); 
	}

	modalCont.style.display  = 'none';
	modalCover.style.display = 'none';

	// for IE 6, we hide the dropdowns
	if (navigator.userAgent.indexOf("MSIE 6") > 0)
	{
		login_show_dropdowns();
	}
	var player = document.getElementById('player_div');
	if(player)
	{
		player.style.display = 'block';
	}
}

function show_modal(mCont,el,faq)
{
	var vW = viewport_width();
	var vH = viewport_height();
	var vS = viewport_size();
	var sH = scrollsize_height();
	var sW = scrollsize_width();
	var sT = my_scroll_top();
	var modalCont = $(mCont);
	var modalCover = $('modal_cover');
	var hR = faq;
	var iF = document.getElementsByTagName('iframe');

	window.onscroll = window.onresize = function (e)
	{
		var Client =
		{
			myScrollTop: function()
			{
				return self.scrollTop || (document.documentElement.scrollTop || document.body.scrollTop);
			}
		};

		var sT = Client.myScrollTop();
		modalCont.style.top = ((vH - 295)/2) + sT + 'px';
	};

	hide_naughty_iframes();
	hide_naughty_wmps();
	hide_naughty_tags();
	hide_adwrapper();

	// for IE 6, we hide the dropdowns.
	if (navigator.userAgent.indexOf("MSIE 6") > 0)
	{
		login_hide_dropdowns();
	}
	var player = document.getElementById('player_div');
	if (player)
	{
		player.style.display = 'none';
	}

	if (sH < vH)
	{
		modalCover.style.height = vH + 'px';
	}
	else
	{
		modalCover.style.height = sH + 'px';
	}

	modalCont.style.width = '745px';
	modalCont.style.height = '390px';
	modalCont.style.clear = 'all';
	modalCont.style.left = (vW - 745) / 2 + 'px';
	modalCont.style.top = (vH - 390) / 2 + 'px';
	modalCont.style.display = 'block';


	if (hR)
	{
		for (f = 0; f < iF.length; f++)
		{
			iF[f].src = iF[f].src + hR;
		}
	}

// -----------------------------------------------------------------------------------

// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
function getPageSize()
{
	
	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY)
	{
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	}
	else if (document.body.scrollHeight > document.body.offsetHeight)
	{
		// all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	}
	else
	{
		// Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;
	if (self.innerHeight)
	{
		// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
	{
		// Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	}
	else if (document.body)
	{
		// other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}

	// for small pages with total height less then height of the viewport
	if (yScroll < windowHeight)
	{
		pageHeight = windowHeight;
	}
	else
	{
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth)
	{
		pageWidth = windowWidth;
	}
	else
	{
		pageWidth = xScroll;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
	return arrayPageSize;
}

// -----------------------------------------------------------------------------------

var arrayPageSize = getPageSize();

if (navigator.userAgent.indexOf("MSIE 6") > 0)
{
	modalCover.style.width = arrayPageSize[0] + 'px';
}
else
{
	modalCover.style.width = 100 + '%';
	modalCover.style.minWidth = 968 + 'px';
}

modalCover.style.position = 'absolute';
modalCover.style.top = '0px';
modalCover.style.left = '0px';
modalCover.style.display = 'block';
modalCover.style.overflow = 'hidden';

modalCont.style.display = 'block';
}

function login_hide_dropdowns()
{
	var elements = document.getElementsByTagName('select');
	var i = 0;
	for (i = 0; i < elements.length; i++)
	{
		if (elements[i].type == 'select-one')
		{
			elements[i].style.display = 'none';
		}
	}
	if (typeof window.pldv_hide_overlay == 'function')
	{
		pldv_hide_overlay();
	}
}

function login_show_dropdowns()
{
	var elements = document.getElementsByTagName('select');
	var i = 0;
	for (i = 0; i < elements.length; i++)
	{
		if (elements[i].type == 'select-one')
		{
			elements[i].style.display = '';
		}
	}
	if (typeof window.pldv_show_overlay == 'function')
	{
		pldv_show_overlay();
	}
}




function nrToggle(el)
{
	var trailOne = document.getElementById('cn_nr_cont_1');
	var trailTwo = document.getElementById('cn_nr_cont_2');
	if (el.className == 'cn_nr_one')
	{
		trailOne.style.display = 'block';
		trailTwo.style.display = 'none';
		return false;
	}
	if (el.className == 'cn_nr_two')
	{
		trailTwo.style.display = 'block';
		trailOne.style.display = 'none';
		return false;
	}
	if (el.className == '')
	{
		if (trailOne.style.display == 'none')
		{
			trailTwo.style.display = 'none';
			trailOne.style.display = 'block';
		}
		else if (trailTwo.style.display == 'none')
		{
			trailOne.style.display = 'none';
			trailTwo.style.display = 'block';
		}
	}
	
}

function is_all_ws(nod)
{
	return !(/[^\t\n\r ]/.test(nod.data));
}

function is_ignorable(nod)
{
	return (nod.nodeType == 8) || ((nod.nodeType == 3) && is_all_ws(nod));
}

function node_before(sib)
{
	while ((sib = sib.previousSibling))
	{
		if (!is_ignorable(sib)) return sib;
	}
	return null;
}

function node_after(sib)
{
	while ((sib = sib.nextSibling))
	{
		if (!is_ignorable(sib)) return sib;
	}
	return null;
}

function first_child(par)
{
	var res = par.firstChild;
	while(res)
	{
		if (!is_ignorable(res)) return res;
		res = res.nextSibling;
	}
	return null;
}

function last_child(par)
{
	var res = par.lastChild;
	while (res)
	{
		if (!is_ignorable(res)) return res;
		res = res.previousSibling;
	}
	return null;
}

function toggleNav(el)
{	
	var link = node_after(el);
	var list = document.getElementById('cn_nav_ul').getElementsByTagName('a');
	var nextList = document.getElementById('cn_nav_ul').getElementsByTagName('ul');

	if (link.style.display == 'block')
	{
		link.style.display = 'none';
		el.className = 'cn_leftnav_updwn';
		el.style.backgroundPosition = 'top left';
		return false;
	}

	for (i = 0; i < list.length; i++)
	{
		var myLink = list[i];
		if (myLink.className == 'cn_leftnav_updwn' || myLink.className == 'cn_leftnav_updwnup')
		{
			myLink.className = 'cn_leftnav_updwn';
			myLink.style.backgroundPosition = 'top left';
		}
	}

	for (a = 0; a < nextList.length; a++)
	{
		var thisList = nextList[a];
		if (thisList.className == 'cn_leftnav_sub')
		{
			thisList.style.display = 'none';
		}
	}

	link.style.display = 'block';
	el.className = 'cn_leftnav_updwnup';
	el.style.backgroundPosition = 'top right';
}

function newRelease()
{
	var getUm = document.getElementById('cn_nr_cont_1').childNodes;
	for (i = 0; i < getUm.length; i++)
	{	
		var gotUm = getUm[i];
		if (gotUm.className == 'cn_nr_wrap')
		{
			gotUm.onmouseover = function()
			{
				this.className = 'cn_nr_wrap_on';
			}
			gotUm.onmouseout = function()
			{
				this.className = 'cn_nr_wrap';
			}
		}
	}
	var getUm = document.getElementById('cn_nr_cont_2').childNodes;
	for (i = 0; i < getUm.length; i++)
	{	
		var gotUm = getUm[i];
		if (gotUm.className == 'cn_nr_wrap')
		{
			gotUm.onmouseover = function()
			{
				this.className = 'cn_nr_wrap_on';
			}
			gotUm.onmouseout = function()
			{
				this.className = 'cn_nr_wrap';
			}
		}
	}
}
function shows()
{
	var getUm = document.getElementById('cn_nr_cont_1').childNodes;
	for (i = 0; i < getUm.length; i++)
	{
		var gotUm = getUm[i];
		if (gotUm.className == 'cn_tv_wrap')
		{
			gotUm.onmouseover = function()
			{
				this.className = 'cn_tv_wrap_on';
			}
			gotUm.onmouseout = function()
			{
				this.className = 'cn_tv_wrap';
			}
		}
	}
	var getUm = document.getElementById('cn_nr_cont_2').childNodes;
	for (i = 0; i < getUm.length; i++)
	{
		var gotUm = getUm[i];
		if (gotUm.className == 'cn_tv_wrap')
		{
			gotUm.onmouseover = function()
			{
				this.className = 'cn_tv_wrap_on';
			}
			gotUm.onmouseout = function()
			{
				this.className = 'cn_tv_wrap';
			}
		}
	}
}



//TOOL TIPS

/*Javascript for Bubble Tooltips by Alessandro Fulciniti
http://pro.html.it - http://web-graphics.com */

function enableTooltips(id)
{
	var links,i,h;
	if (!document.getElementById || !document.getElementsByTagName) return;

	h = document.createElement("span");
	h.id = "btc";
	h.setAttribute("id","btc");
	h.style.position = "absolute";
	document.getElementsByTagName("body")[0].appendChild(h);
	var working = document.getElementById(id);
	if (id == null) 
	{
		links = document.getElementsByTagName("a");
	}
	else if (working == null)
	{
		return false;
	}
	else 
	{
		links = document.getElementById(id).getElementsByTagName("a");
	}
	for (i=0; i < links.length; i++)
	{
		if (links[i].className == 'cn_rating_movie')
		{
			Prepare(links[i]);
		}
	}
	for (i=0; i < links.length; i++)
	{
		if (links[i].className == 'cn_rating_tv')
		{
			Prepare(links[i]);
		}
	}
}

function Prepare(el)
{
	var tooltip;
	if (el.className == 'cn_rating_movie')
	{
		tooltip = CreateEl("span","tooltip_movie");
	}
	else if (el.className == 'cn_rating_tv')
	{
		tooltip = CreateEl("span","tooltip_tv");
	}
	else
	{
		return;
	}
	setOpacity(tooltip);
	el.tooltip = tooltip;
	el.onmouseover = showTooltip;
	el.onmouseout = hideTooltip;
	el.onmousemove = Locate;
}

function showTooltip(e)
{
	document.getElementById("btc").appendChild(this.tooltip);
	Locate(e);
}

function hideTooltip(e)
{
	var d=document.getElementById("btc");
	if (d.childNodes.length>0) d.removeChild(d.firstChild);
}

function setOpacity(el)
{
	el.style.filter="alpha(opacity:100)";
	el.style.KHTMLOpacity="1";
	el.style.MozOpacity="1";
	el.style.opacity="1";
}

function CreateEl(t,c)
{
	var x=document.createElement(t);
	x.className=c;
	x.style.display="block";
	return (x);
}

function AddCss()
{
	var l=CreateEl("link");
	l.setAttribute("type","text/css");
	l.setAttribute("rel","stylesheet");
	l.setAttribute("href","../css/store.css");
	l.setAttribute("media","screen");
	document.getElementsByTagName("head")[0].appendChild(l);
}

function Locate(e)
{
	var posx=0,posy=0;
	if (e==null) e=window.event;
	if (e.pageX || e.pageY)
	{
		posx=e.pageX; posy=e.pageY;
	}
	else if (e.clientX || e.clientY)
	{
		if (document.documentElement.scrollTop)
		{
			posx=e.clientX+document.documentElement.scrollLeft;
			posy=e.clientY+document.documentElement.scrollTop;
		}
		else
		{
			posx=e.clientX+document.body.scrollLeft;
			posy=e.clientY+document.body.scrollTop;
		}
	}
	document.getElementById("btc").style.top=(posy-185)+"px";
	document.getElementById("btc").style.left=(posx-10)+"px";
}

// addLoadEvent is Simon Willison's function that aloows for convenient
// addition of multiple fuctions that are all supposed to be triggered
// on window.onload event. 
// takes function name as the argument. e.g. addLoadEvent(doPopups);
function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else
	{
		window.onload = function()
		{
			oldonload();
			func();
		}
	}
}

function runToolTip()
{
	enableTooltips("cn_main_cont");
}

function warn_no_ie()
{
	if (navigator.userAgent.indexOf('MSIE') == -1)
	{
		document.getElementById("browser_warning").style.display = 'block';
	}
}

addLoadEvent(warn_no_ie);
addLoadEvent(runToolTip);

