/////////////////////////////// Environment Variables //////////////////////////////
var browser = new browser();
var width;
var height;
var simultaneous = 1;
var animating = 1;

if (browser.NN) 
{
	onState = "show"; 
	offState = "hide";
}	 
else if (browser.IE) 
{
	onState = "visible"; 
	offState = "hidden";
}

function browser()
{
    var agent = navigator.userAgent.toLowerCase();
    this.NN  = ((agent.indexOf('mozilla')!=-1) && ((agent.indexOf('spoofer')==-1) && (agent.indexOf('compatible') == -1)));
    this.IE   = (agent.indexOf("msie") != -1);
    this.WIN = (agent.indexOf("win") != -1);
    this.IE5 = (this.IE && (agent.indexOf('5') != -1));
}

////////////////////////////// Helper Functions ///////////////////////////////////
function getDimensions()
{
	if (browser.NN)
	{
		width = window.innerWidth;
		height = window.innerHeight;
	    scrollheight = document.layers['body'].clip.height;
		scrollwidth = document.layers['body'].clip.width;
		document.height = scrollheight;
		document.width = scrollwidth;
	}
	else
	{
		width = document.body.clientWidth;
		height = document.body.clientHeight;
		scrollheight = body.scrollHeight;
		scrollwidth = body.scrollWidth;
	}
}

function getLayerStyle(layerID)
{
	if (browser.NN) 
		return document.layers[layerID];
	else 
		return document.all[layerID].style;
}

function showLayer(object)
{
	object.visibility = onState;
}

function hideLayer(object)
{
	object.visibility = offState;
}

function changeImage(layerName, imageName, image ) 
{
	if(browser.NN) 
		document.layers[layerName].document.images[imageName].src = image;
  	else
		document[imageName].src = image;
}

function getImage(layerName, imageName) 
{
	if(browser.NN) 
		return document.layers[layerName].document.images[imageName].src;
  	else
		return document[imageName].src;	
}

function setImageHeight(layerName, imageName, heightChange)
{
	if(browser.NN) 
		document.layers[layerName].document.images[imageName].height = heightChange;
  	else
		document[imageName].height = heightChange;
}

function setImageWidth(layerName, imageName, widthChange)
{
	if(browser.NN) 
		document.layers[layerName].document.images[imageName].width = widthChange;
  	else
		document[imageName].width = widthChange;
}

function setPos(x, y, layerID)
{
	hideLayer(getLayerStyle(layerID));
	if(browser.NN)
	{
		getLayerStyle(layerID).left = x;
		getLayerStyle(layerID).top = y;
	}
	else
	{
		getLayerStyle(layerID).pixelLeft = x;
		getLayerStyle(layerID).pixelTop = y;
	}
	showLayer(getLayerStyle(layerID));
}

function getWidth(name) 
{
	var el = getObjectRef(name);
  	if(browser.NN)
		return el.clip.width;
	else
  		return el.offsetWidth;
}

function getHeight(name) 
{
	var el = getObjectRef(name);
  	if(browser.NN)
		return el.clip.height;
	else
  		return el.offsetHeight;
}

function getObjectRef(layerID) {
	if (browser.NN) 
		return document.layers[layerID];
	else 
		return document.all[layerID];
}

/////////////////////////// Cookie Reading/Writing Stuff /////////////////////////

function writeCookie(value)
{
	var the_cookie = "cookie=page:" + value;
	document.cookie = the_cookie;
}

function readCookie(name)
{
	// if there's no cookie, return false else get the value and return it
	if(document.cookie == '')
		return false;
  	else
	{
		return unescape(getCookieValue(name));
	}
}

function getCookieValue(name)
{
	// Declare variables.
	var firstChar, lastChar;

	// Get the entire cookie string.
	// (This may have other name=value pairs in it.)

	var theBigCookie = document.cookie;
	// Grab just this cookie from theBigCookie string.

	// Find the start of 'name'.
	firstChar = theBigCookie.indexOf(name);

	// If you found it,
	if(firstChar != -1)
 	{
		// skip 'name' and '='.
		firstChar += name.length + 1;
	// Find the end of the value string (i.e. the next ';').

    lastChar = theBigCookie.indexOf(';', firstChar);

	if(lastChar == -1) lastChar = theBigCookie.length;

    // Return the value.

    return theBigCookie.substring(firstChar, lastChar);
	} 
	else
	{
    	// If there was no cookie, return false.
	    return false;
	}
}
////////////////// Location bar reading //////////////////////////////////////

function getSearchMenu(searchProperty)
{
	search = window.location.search;
	equals = search.indexOf("="); 	
	amp = search.indexOf("&"); 	
	while(amp != -1)
	{             	
		property = search.substring(1, equals);
		value = search.substring(equals + 1, amp);    
		if(property == searchProperty)
		{
			value = value.replace(/\+/gi, " ");
			return value;
		}
		else
		{
			equals = search.indexOf("=", equals + 1); 	
			amp = search.indexOf("&", amp + 1); 	 
		}
	}           	
	
	property = search.substring(1, equals);
	value = search.substring(equals + 1, search.length);  
	
	if(property == searchProperty)
	{
		value = value.replace(/\+/gi, " "); 
		return value;
	} 
	
	return "";
}

///////////////////// Resizing Stuff /////////////////////////////////////

function reStyle()
{
	if (window.innerWidth != width || window.innerHeight != height)
		location.reload();
} 

function handleResize() {
	if (browser.NN)
	{
		reStyle();
	}
	else
		location.reload();
}

////////////////////// Rollovers Stuff ///////////////////////////////////
function point( imageName, layer ) 
{
	var newImageName = getFilename(getImage(layer, imageName));
	newImageName = newImageName.substring(0, newImageName.length - 4) + "over.gif";
	changeImage(layer, imageName, "images/" + newImageName );		
}

function nopoint( imageName, layer ) 
{
  		var newImageName = getFilename(getImage(layer, imageName));
		if(newImageName.indexOf("over") != -1)
		{
			newImageName = newImageName.substring(0, newImageName.length - 8) + ".gif";
			changeImage(layer, imageName, "images/" + newImageName );
		}		
}

function getFilename(filenameString)
{
	var character, tempCharacter;
	character = tempCharacter = filenameString.indexOf("/");
	while(character != -1)
	{
		tempCharacter = character;
		character = filenameString.indexOf("/", character + 1);
	}
	return filenameString.substring(tempCharacter + 1, filenameString.length);
}

//////////////////// Maths Functions //////////////////////////
var pi = Math.PI;

function degToRad(x) { return ( x/(360/(2*pi)) ); }

function radToDeg(x) { return ( x*(360/(2*pi)) ); }

function randInt(min, max)
{
	var div = (max - min) + 1
	var randNum = Math.random()
	for (var i = 0; i < div; i++)
	{
		if (randNum >= i / div && randNum < (i+1) / div)
			{return i + min}
	}
}

/////////////////// Menu Stuff ////////////////////////////////
var menuOpened = null, menuTimer, layerTimer;

function showMenu(layerID)
{
	if(menuOpened != null)
	{	
			hideLayer(getLayerStyle(menuOpened));
			menuOpened = null;
	}
	clearTimeout(layerTimer);
	menuTimer=0;
	showLayer(getLayerStyle(layerID));
	menuOpened = layerID;
	return;
}
function hideMenu()
{
	if(menuTimer < 5)
	{
		menuTimer++;
	}
	else
	{
		if(menuOpened != null)
		{	
			hideLayer(getLayerStyle(menuOpened));
			menuOpened = null;
		}
		menuTimer=0;
		clearTimeout(layerTimer);
		return;
	}
	layerTimer = setTimeout("hideMenu()", 150);
}