var videoReleased = true;
var autoplayVideoOnComplete = false;

var keys = {
	scorpioch: {
		code: '',
		hash: '466348a0ecc893562b7e9868c2571d3d',
		embedded: false
	},
	medusa: {
		code: '',
		hash: '6504a947774cfdf3396f6108b3b683c8',
		embedded: false
	},
	kraken: {
		code: '',
		hash: '6526ef42354a9c2b0b7ff2544fa88c86',
		embedded: false
	}
};

var btnKeys = ["scorpioch", "medusa", "kraken", "video"];
var vidKey = { code: '', embedded: false, autoload: false, activated: false};

var codePrefill = ["ENTER CODE", "INVALID CODE"];
var buildTime = 1500;
	
$(function()
{
	$.preloadCssImages();
	$(".close_overlay").click(hideOverlay);
	$(".bg_image").hide();
	$("a[href=#]").click(function() { if ($(this).attr("href") == "#") return false; });
	
	// TODO: preload hover state images
	
	$(window).bind("load", function() {
		$("#spinner").hide();
		$("#bg_scorpioch").fadeIn("slow", function() {
   			$("#bg_main").show();
		});
		
		$("#code").focus(codeFocusHandler).blur(codeBlurHandler).blur();
		$("#form_code").submit(codeSubmitHandler);
		buildInButtons();
		setTimeout(checkCookies, buildTime);
		$("#btn_help").click(function() { return showOverlay("help") });
		$("#submit").hover(function() {
			$(this).attr("src", "images/btn_submit_over.png")
		}, function() {
			$(this).attr("src", "images/btn_submit.png")
		})
		
		try{
			if ($.browser.mozilla) {
				$(window).resize(addMargin).resize();
			}
		}catch(ex){}
		
		
	});
});

function initBackgroundSwap()
{
	for (var index in btnKeys)
	{
		(function (key)
		{				
			$("#btn_"+key).hover(function() 
			{
				if (!($.browser.msie))
				{
					$(this).find(".over").stop(true).fadeTo("normal", 1);
				}
				else
				{
					$(this).find(".over").show();
				}
				
				if ($("#bg_"+key)[0])
				{
				    $(".bg_image.hideable").stop(true);
					$(".bg_image.hideable[id!=bg_"+key+"]").fadeTo("slow", 0);
					$("#bg_"+key).fadeTo("slow", 1);
				}
			}, function() 
			{
				if (!($.browser.msie))
				{
					$(this).find(".over").stop(true).fadeTo("normal", 0);
				}
				else
				{
					$(this).find(".over").hide();
				}
			});
		})(btnKeys[index]);
	}
}

function buildInButtons()
{
	if ($("#side_buttons > div:hidden:first")[0])
	{
		$("#side_buttons > div:hidden:first").fadeIn(buildTime/4, buildInButtons);
	}
	else
	{
		initBackgroundSwap();
	}
}

function checkCookies()
{
	var delayCounter = 0;
	for (var key in keys)
	{
		if ($.cookie(key) && checkCode($.cookie(key)))
		{
			(function (k) {
				setTimeout(function() { activateButton(k) }, delayCounter * buildTime / 4);
			})(key);
			delayCounter++;
		}
	}
	setTimeout(checkForVideo, delayCounter * buildTime / 4)
}


function codeFocusHandler()
{
	if ($.inArray($(this).val(), codePrefill) !== -1)
	{
		$(this).css("color", "#000000").val("");
	}
}

function codeBlurHandler()
{
	if ($(this).val() == "")
	{
		$(this).css("color", "#767676").val(codePrefill[0]);
	}
}

function codeSubmitHandler()
{				
	var key = "";
	if (key = checkCode($("#code").val().replace(/^\s+|\s+$/g,"").toLowerCase()))
	{
		_gaq.push(["_trackEvent", "code_submit", key]);
		activateButton(key);
		setTimeout(function() {showOverlay(key) }, buildTime / 4);
		setTimeout(checkForVideo, buildTime / 2);
		
		// is the video unlocked?
		setTimeout(function() {
			if (autoplayVideoOnComplete && vidKey.activated)
			{
				// play the video automatically when overlay closes
				vidKey.autoload = true;
			}
		}, buildTime * 1.5)
	}
	else
	{
		_gaq.push(["_trackEvent", "code_submit", "invalid", $("#code").val()]);
		$("#code").blur().css("color", "#FF0000").val(codePrefill[1]);
	}
	
	return false;
}

function checkCode(code, skipCookies)
{
	var salt = "n8cqt74qt6n7qntdfn7ad6f798ncxcn780943xnc7";
	var hash = calcMD5(code.toUpperCase()+salt);
	for (var key in keys)
	{
		if (hash == keys[key].hash)
		{
			if (! skipCookies) $.cookie(key, code, {expires: 200, path: "/"});
			keys[key].code = code;
			return key;
		}
	}
	return false;
}

function checkForVideo()
{
	if (! videoReleased) return "";
	
	var code = "";
	var arr = ['scorpioch', 'medusa', 'kraken'];
	for (var index in arr)
	{
		key = arr[index];

		if (keys[key].code) 
		{
			code += keys[key].code;
		}
		else
		{
			return "";
		}
	
	}
	vidKey.code = code;
	vidKey.activated = true;
	activateButton("video");
}

function activateButton(id)
{	
	// overlay btn
	if ($.browser.msie)
	{
		$("#btn_"+id+"  .locked").hide();
		$("#btn_"+id+"  .unlocked").show();
	}
	else
	{
		$("#btn_"+id+"  .locked").fadeOut();
		$("#btn_"+id+"  .unlocked").fadeIn();
	}

	$("#btn_"+id).click(function() { return showOverlay(id) });
	
	// sharer btn
	var killCache = Math.round(10000*Math.random());
	var sharePageURI = "http://www.riseagainstthetitans.com/sharer.php?c="+id+"&kc="+killCache;
	var shareURI = "http://www.facebook.com/sharer.php?u=" + escape(sharePageURI);
	$("#overlay_"+id+" .btn_facebook").attr('href', shareURI);
	
	// continue btn
	$("#overlay_"+id+" .ar_continue").click(function() { loadAR(id) });
}

function showOverlay(id)
{
	_gaq.push(["_trackPageview", "/overlay_"+id], ["_trackEvent", "overlay_"+id, "open"]);
	
	$("#overlay_"+id).fadeIn();
	$("#code").attr("disabled", "disabled");
	
	if (id == "video") loadVideo();
	else if (keys[id] && keys[id].embedded)
	{
		loadAR(id);
	}
	
	return false;
}

function hideOverlay()
{
	var id = $(this).parents(".overlay").attr("id").replace("overlay_", "");
	var embedID = keys[id] ? "ar_"+id : "swf_video";
	
	
	var parent = $("#"+embedID).parent();
	swfobject.removeSWF(embedID);
	$(embedID).remove();
	
	var newEmbedContainer = $("<div></div>");
	newEmbedContainer.attr("id", embedID);
	parent.append(newEmbedContainer);
	// 
	$("#code").attr("disabled", "");
	$(".overlay").each(function() {
		if ($(this).css('display') != 'none')
		{
			_gaq.push(["_trackEvent", $(this).attr("id"), "close"]);
			$(this).fadeOut(function() {
				if (vidKey.autoload)
				{
					vidKey.autoload = false;
					showOverlay('video');
				}
			});
		}	
	});
	return false;
}

//--------------------------------------
// FF Bugfix
//--------------------------------------

function addMargin()
{
	$(".page_ar").css('margin-left', window.outerWidth % 2 ? '0' : '0.5px');
}

//--------------------------------------
// VIDEO SETTINGS
//--------------------------------------

var vidSettings = {
	swfUrl: "media/StrobeMediaPlayback.swf",
	id: "swf_video",
	width: "906",
	height: "333",
	version: "10.0.0",
	params: {
		allowFullScreen: "true"
	},
	attributes: {
		id: "swf_video",
		name: "swf_video",
		bgcolor: "#000000"
	}
};

vidSettings.flashvars = {
	id: 1,
	width: vidSettings.width,
	height: vidSettings.height,
	autoHideControlBar: "true",
	controlBarPosition: "bottom"
};

function loadVideo()
{
	if (vidKey.code && vidKey.activated)
	{	
		_gaq.push(["_trackEvent", "overlay_video", "view"]);
		
		vidKey.embedded = true;
		vidSettings.flashvars.src = vidKey.code+".f4v";
		
		swfobject.embedSWF(
			vidSettings.swfUrl, 
			vidSettings.id, 
			vidSettings.width, 
			vidSettings.height, 
			vidSettings.version, 
			null, 
			vidSettings.flashvars,
			vidSettings.params,
			vidSettings.attributes
		);
	}
}

//--------------------------------------
// AR SETTINGS
//--------------------------------------

// id & flashvars are dynamic
var arSettings = {
	swfUrl: "media/shell.swf",
	width: "640",
	height: "480",
	version: "10.0.0",
	flashvars: {},
	params: {
		base: "media",
		bgcolor: "#000000"
	},
	attributes: {}
}

function loadAR(id)
{
	_gaq.push(["_trackEvent", "overlay_"+id, "view_ar"]);
	if (keys[id].code)
	{
		keys[id].embedded = true;
		$("#overlay_"+id+" .bg .middle").animate({ height: 440 });
		$("#overlay_"+id+" .bg .fill").animate({ height: 156 });
		$("#overlay_"+id+" .page_intro").fadeOut("slow", function() {
			$("#overlay_"+id+" .page_ar").fadeIn("slow");
			
			arSettings.attributes.id = arSettings.attributes.name = "ar_"+id;
			arSettings.flashvars.config = "ctar/"+keys[id].code+".xml";
			
			swfobject.embedSWF(
				arSettings.swfUrl+"?kc="+Math.floor(Math.random() * 1000), 
				"ar_"+id, 
				arSettings.width, 
				arSettings.height, 
				arSettings.version, 
				null, 
				arSettings.flashvars,
				arSettings.params,
				arSettings.attributes
			);
			
		});
	}
	
}

