/*
	Copyright (c) 2009 Geoffrey McRae
	All Rights Reserved.
*/

var banner;
var servers;
var logo;
var menu;
var servers_x;
var logo_y;	
var menu_x;
var content_y;
var logo_target;
var menu_target;
var content_target;
var fadeDone;
var lDiv;
var rDiv;
var speed;
var loaded;
var content;
var bFix;
var running;

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function docWidth() {
	return ((window.innerWidth) ? window.innerWidth : document.body.clientWidth);
}

function docHeight() {
	return ((window.innerHeight) ? window.innerHeight : document.body.clientHeight);
}

function init() {
	speed			= 10;
	banner			= document.getElementById('banner');
	servers			= document.getElementById('servers');
	logo			= document.getElementById('logo');
	menu			= document.getElementById('menu');
	lDiv			= document.getElementById('lDiv');
	rDiv			= document.getElementById('rDiv');
	content			= document.getElementById('content');
	loaded			= 0;


	content_y		= docHeight() + 10;
	logo_target		= 23;
	menu_target		= 0;

	if (readCookie('effectsDone')) {
		fadeDone		= true;
		bFix			= true;
		servers_x		= Math.round((docWidth() / 2) - (411 / 2));
		logo_y			= logo_target;
		menu_x			= menu_target;
	} else {
		changeOpac(0, 'lDiv');
		changeOpac(0, 'rDiv');
		changeOpac(0, 'banner');
		fadeDone		= false;
		bFix			= false;
		servers_x		= -421;
		logo_y			= -61;
		menu_x			= docWidth () + 10;
	}

	servers.style.left	= servers_x	+ "px";
	logo.style.top		= logo_y	+ "px";
	menu.style.left		= menu_x	+ "px";
	content.style.top	= content_y	+ "px";

	with (new Image(1, 1)) {
		onload	= ready;
		src	= "theme/images/banner_fill.jpg";
	}

	with (new Image(1, 1)) {
		onload	= ready;
		src	= "theme/images/menu_up.jpg";
	}

	with (new Image(1, 1)) {
		onload	= ready;
		src	= "theme/images/menu_dn.jpg";
	}
}

function ready() {
	if (++loaded < 3) return;

	menu.style.display	= 'block';
	banner.style.display	= 'block';
	logo.style.display	= 'block';

	if (!bFix) {
		servers.style.display	= 'block';
		lDiv.style.display	= 'block';
		rDiv.style.display	= 'block';
	}

	if (!fadeDone)
		opacity('banner', 0, 100, 2500);

	window.onresize		= resize;
	window.onbeforeunload	= unload;
	resize();
}

function resize() {
	content_target		= menu.offsetTop + 21;
	content.style.height	= (docHeight() - content_target) + "px";
	content.style.display	= 'block';
	flyIn();
}

function flyIn() {
	var width		= docWidth();
	var servers_target	= Math.round((width / 2) - (411 / 2));
	var doTimeout		= false;
	var tmp;

	if ((bFix) || (Math.round(servers_x) != servers_target)) {
		if (bFix)
			servers_x	= servers_target;
		else	servers_x	+= (servers_target - servers_x) / speed;
		tmp = Math.round(servers_x);
		servers.style.left	= tmp		+ "px";
		lDiv.style.left		= tmp - 210	+ "px";
		rDiv.style.left		= tmp + 411	+ "px";
		doTimeout		= true;

		if (bFix) {
			bFix			= false;
			servers.style.display	= 'block';
			lDiv.style.display	= 'block';
			rDiv.style.display	= 'block';
		}
	}

	if (Math.round(logo_y) != logo_target) {
		logo_y += (logo_target - logo_y) / speed;
		logo.style.top = Math.round(logo_y) + "px";
		doTimeout = true;
	}

	if (Math.round(menu_x) != menu_target) {
		menu_x += (menu_target - menu_x) / speed;
		menu.style.left = Math.round(menu_x) + "px";
		doTimeout = true;
	}

	if (Math.round(content_y) != content_target) {
		content_y += (content_target - content_y) / speed;
		content.style.top = Math.round(content_y) + "px";
		doTimeout = true;
	}

	if (doTimeout) {
		running = true;
		setTimeout("flyIn()", 20);
	} else {
		running = false;
		fadeIn();
	}
}

function fadeIn() {
	if (fadeDone) return;
	opacity('lDiv', 0, 100, 1000);
	opacity('rDiv', 0, 100, 1000);
	fadeDone = true;

	createCookie('effectsDone', true, 1);
}

function unload() {
	content_target = docHeight() + 10;
	flyIn();
}
