var movie_trailer = null;

event_queue("onload", add_rollovers);
event_queue("onload", verify_window_size);
event_queue("onresize", verify_window_size);

window.$ = function (id)
{
	if (typeof(id) == "string")
		return this.document.getElementById(id);
	else
		return id;
}

function event_queue(type, f)
{
	obj_event_queue(window, type, f);
}

function obj_event_queue(o, type, f)
{
	var typeQueue = type + "Queue";

	if (typeof(o[typeQueue]) == "undefined")
	{
		o[typeQueue] = [];
		if (o[type])
			obj_event_queue(o, type, o[type]);

		o[type] = function()
		{
			for (var i = o[typeQueue].length - 1; i >= 0; i--)
			{
				o.eventQueueCurrent = o[typeQueue][i];
				if (o.eventQueueCurrent)
					o.eventQueueCurrent();
			}

			o.eventQueueCurrent = null;
		}
	}

	o[typeQueue][o[typeQueue].length] = f;
}

function playTrailer(trailer)
{
	var overlay = document.createElement("div");
	if (!overlay)
		return true;

	overlay.id = "overlay";
	overlay.onclick = stopTrailer;
	overlay.onmousedown = stopTrailer;
	set_opacity(overlay, 0.8);

	var h = document.body.offsetHeight;
	if (h < document.body.scrollHeight)
		h = document.body.scrollHeight;
	if (window.innerHeight && h < window.innerHeight)
		h = window.innerHeight;
	if (document.documentElement && h < document.documentElement.clientHeight)
		h = document.documentElement.clientHeight;

	overlay.style.height = h + "px";

	document.body.appendChild(overlay);

	var div_size = getWindowSize();
	var div = document.createElement("div");
	div.id = "trailer";
	div.style.left = ((div_size.w - 640) / 2 + div_size.wo) + "px";
	div.style.top = ((div_size.h - 375) / 2 + div_size.ho) + "px";

	document.body.appendChild(div);

	movie_trailer = trailer;
	window.setTimeout(startTrailer, 0);

	return false;
}

function getWindowSize()
{
	var size = {};

	function getSizeAxis(axis)
	{
		var v = document.body["offset" + axis];

		if (v > document.body["scroll" + axis])
			v = document.body["scroll" + axis];
		if (window["inner" + axis] && v > window["inner" + axis])
			v = window["inner" + axis];
		if (document.documentElement && document.documentElement["client" + axis] && v > document.documentElement["client" + axis])
			v = document.documentElement["client" + axis];

		return v;
	}

	size.w = getSizeAxis("Width");
	size.h = getSizeAxis("Height");

	if (self.pageYOffset)
	{
		size.wo = self.pageXOffset;
		size.ho = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
	{
		size.wo = document.documentElement.scrollLeft;
		size.ho = document.documentElement.scrollTop;
	}
	else if (document.body)
	{
		size.wo = document.body.scrollLeft;
		size.ho = document.body.scrollTop;
	}

	return size;
}

function startTrailer()
{
	var template = '<embed id="trailer-video" src="[SRC]" width="640" height="375" autoplay="true" controller="true" loop="false" bgcolor="000000" enablejavascript="true" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/download/indext.html"></embed>';

	var div = $("trailer");
	if (div)
		div.innerHTML = template.replace(/\[SRC\]/g, movie_trailer);
}

function stopTrailer()
{
	var overlay = $("overlay");
	var div = $("trailer");
	var video = $("trailer-video");

	if (overlay)
		document.body.removeChild(overlay);

	try
	{
		if (video.Stop)
			video.Stop();
	}
	catch (e)
	{
	}
	div.removeChild(video);

	// This makes IE not keep the movie around...
	div.innerHTML = "";
	if (div)
		document.body.removeChild(div);
}

function showFriend(href, target)
{
	window.open(href, target, 'width=274,height=540,resizable=no,scrollbars=no');
}

function showUpdates(href, target)
{
	window.open(href, target, 'width=274,height=375,resizable=no,scrollbars=no');
}

function validateFriend(form)
{
	if (form["from[email]"].value.length == 0)
	{
		alert("Please enter your email address.");
		return false;
	}

	if (form["to[email]"].value.length == 0)
	{
		alert("Please enter your friend's email address.");
		return false;
	}

	return true;
}

function validateUpdates(form)
{
	if (form.email.value.length == 0)
	{
		alert("Please enter your email address.");
		return false;
	}

	return true;
}


function set_opacity(el, f)
{
	if (typeof(el.style.MozOpacity) != "undefined")
		return el.style.MozOpacity = f;
	else if (typeof(el.style.KhtmlOpacity) != "undefined")
		return el.style.KhtmlOpacity = f;
	else if (typeof(el.style.filter) != "undefined")
		return el.style.filter = "alpha(opacity=" + Math.round(f * 100) + ");"
	else
		return el.style.opacity = f;
}

var preload_list = [];
var preload_done = false;

function add_rollovers()
{
	var imgs = document.getElementsByTagName ? document.getElementsByTagName("img") : document.all.tags.img;
	var inputs = document.getElementsByTagName ? document.getElementsByTagName("input") : document.all.tags.input;

	var list = [];
	var i;

	for (i = 0; i < imgs.length; i++)
		list[list.length] = imgs[i];
	for (i = 0; i < inputs.length; i++)
		list[list.length] = inputs[i];

	for (i = 0; i < list.length; i++)
	{
		if (list[i].className.match(/\bpreload\b/) != null)
			preload_list[preload_list.length] = list[i].src;

		if (list[i].className.match(/\bhover-image\b/) == null)
			continue;

		preload_list[preload_list.length] = list[i].src.replace("_off.", "_over.");
		preload_list[preload_list.length] = list[i].src.replace("_over.", "_off.");

		list[i].onmouseover = function ()
		{
			this.src = this.src.replace("_off.", "_over.");
		}
		list[i].onmouseout = function ()
		{
			this.src = this.src.replace("_over.", "_off.");
		}
	}

	var temp;
	for (i = 0; i < preload_list.length; i++)
	{
		temp = new Image();
		temp.src = preload_list[i];
		preload_list[i] = temp;
	}

	window.setTimeout(check_preloads, 40);
}

function check_preloads()
{
	var done = true;
	for (var i = 0; i < preload_list.length; i++)
	{
		if (preload_list[i].width == 0)
			done = false;
	}

	if (!done)
		window.setTimeout(check_preloads, 40);
	else
		preload_done = true;
}

var swapCurrent = false;

function verify_window_size()
{
	var x, y;

	if (typeof(do_resize_window) == "undefined" || !do_resize_window)
		return;

	if (self.innerHeight)
	{
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
	{
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body)
	{
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}

	var x_diff = 1012 - x;
	var y_diff = 749 - y;

	window.resizeBy(x_diff, y_diff);
}

function swapIntro(now)
{
	if (!preload_done)
		return;

	function finish()
	{
		var hide = ["intro-none-image", "intro-trailer-image", "intro-friend-image", "intro-updates-image", "intro-merchandise-image"];

		if (swapCurrent != now)
			return;

		for (var i = 0; i < hide.length; i++)
		{
			$(hide[i]).style.visibility = "hidden";
			$(hide[i]).style.zIndex = 1;
		}

		if (now)
			now = $("intro-" + now + "-image");
		else
			now = $("intro-none-image")

		now.style.visibility = "visible";
		now.style.zIndex = 2;
	}

	if (swapCurrent != now)
	{
		swapCurrent = now;
		window.setTimeout(finish, now ? 5 : 100);
	}
}