var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);
var is_nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
 && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
 && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1) && (is_major < 5));
var is_nav6up = ((is_nav && (is_major >= 5)) || (agt.indexOf('gecko') != -1));
var is_moz = (agt.indexOf('gecko') != -1);
var is_opera = (agt.indexOf("opera") != -1);
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie3 = (is_ie && (is_major < 4));
var is_ie4 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5")==-1) );
var is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
var is_ie55up = (is_ie && !is_ie3 && !is_ie4 && !is_ie5);
var MAC = navigator.platform.indexOf("Mac") != -1;
var lHeight;
var logoY = 0;
var lastScrY;
var demY = 0.7;
var sY = 0;
var accY = 24;
var align = "bottom";
var loopFunc = "";

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

function getWindowWidth() 
{
	var x,y;
	if (self.innerHeight) // all except Explorer
	{
			x = self.innerWidth;
			y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
			// Explorer 6 Strict Mode
	{
			x = document.documentElement.clientWidth;
			y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
			x = document.body.clientWidth;
			y = document.body.clientHeight;
	}
	
	if(is_moz){ x -= 18; }
	return x;
	
}

function getOffset()
{
	var x,y;
	if (self.pageYOffset) // all except Explorer
	{
			x = self.pageXOffset;
			y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
			// Explorer 6 Strict
	{
			x = document.documentElement.scrollLeft;
			y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
			x = document.body.scrollLeft;
			y = document.body.scrollTop;
	}
	return y;	
}


function init() 
{
	lHeight = document.getElementById("logo").style.height.split("px")[0];
	if(align == "bottom")
	{
		logoY = getWindowHeight() + getOffset();
		/*
		if(is_nav) logoY = this.innerHeight + this.pageYOffset - lHeight;
		else if(is_ie && MAC) logoY = 100;
		else logoY = window.innerHeight + window.pageYOffset - lHeight;
		*/
	}
	if (is_ie && !MAC) 	loopFunc = "loopIE";
	else if (is_ie && MAC) loopFunc = "loopIEMac";
	else if (is_nav) loopFunc = "loopNS";
	else loopFunc = "loop";
	doTheLoop();
}

function doTheLoop()
{
	switch(loopFunc)
	{
		case "loopIE":
			scrY = document.documentElement.scrollTop;
			logoY = logoPos(scrY);
			document.getElementById("logo").style.top = Math.round(logoY);
			document.getElementById("logo").style.width = getWindowWidth();
			break;
		case "loopIEMac":
			scrY = document.body.scrollTop;
			logoY = logoPos(scrY);
			document.all('logoIEMac').style.top = Math.round(logoY);
			break;
		case "loopNS":
			scrY = this.pageYOffset;
			logoY = logoPos(scrY);
			document.logo.top = Math.round(logoY);
			document.logo.width = getWindowWidth();
			break;
		case "loop":
			scrY = window.pageYOffset;
			logoY = logoPos(scrY);
			document.getElementById("logo").style.top = Math.round(logoY);
			document.getElementById("logo").style.width = getWindowWidth();
			break;
	}
	
	(sY) ? setTimeout("doTheLoop()", 20) : setTimeout("doTheLoop()", 300);
}

function logoPos(scrY) 
{
	var aOffset = 0;
	if(align = "bottom")
	{
		aOffset = getWindowHeight() - lHeight - 10;
	}
	
	var dY = scrY + aOffset - logoY;
	sY = demY *(sY + dY/accY);
	if ((sY < 0.3 && dY > 0.1) || (sY > aOffset - 0.3 && dY < aOffset - 0.1)) { sY = 0; logoY = scrY + aOffset; }
	scrS = scrY - lastScrY;
	if ((scrS < 400) && (dY != 0) && (scrS > 0)) sY = 0;
	else if ((scrS > -380) && (dY != 0) && (scrS < 0)) sY = 0;
	lastScrY = scrY;
	lastLogoY = logoY;
	logoY = logoY + sY;
	return logoY;
}

