
/* *** event manipulator *** */
function AttachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener){
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
	else{
		BrowserAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ BrowserFireEvent(obj,evt) };
	}
} 

//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function BrowserAttachEvent(obj,evt,fnc){
	if (!obj.myEvents) obj.myEvents={};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
}
function BrowserFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
}
/* ****** */



function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls) {
	if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls) {
	if (hasClass(ele,cls)) {
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}

// ----------------------------------

var RGB = new Array(256);
var k = 0;
var hex = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");

for (i = 0; i < 16; i++) {
	for (j = 0; j < 16; j++) {
		RGB[k] = hex[i] + hex[j];
		k++;
	}
}

function convert(p_str){
	if(p_str.indexOf("rgb(") != -1)
	{
		// remove unwanted chars
		p_str = p_str.replace("rgb(", "");
		p_str = p_str.replace(")", "");
		p_str = p_str.replace(/ /g, "");

		p_str = p_str.split(",");

		rr = RGB[p_str[0]];
		gg = RGB[p_str[1]];
		bb = RGB[p_str[2]];

		p_str = rr + gg + bb
	}

	return p_str;
}


function navSelect(p_id)
{
	var navItems = document.getElementById(p_id).getElementsByTagName("a");
	for(i=0; i<navItems.length; i++)
	{
		var child = navItems[i];
		if(child.href == document.location.href || (document.location.href == "http://" + document.location.host + "/index.html" && child.href == "http://" + document.location.host + "/"))
		{
			addClass(child, "on");
		}
	}
}


var repositionPageElementsInit = true;
function repositionPageElements()
{
	var main = document.getElementById("main");
	var cont = document.getElementById("cont");
	var footer = document.getElementById("footer");
	var pageWidth = document.documentElement.clientWidth;
	var pageHeight = document.documentElement.clientHeight;
	var pageScrollHeight = document.documentElement.scrollHeight;
	var maxHeight = 565;
	var mainAdjust = 50;



	var mainHeight = (main.clientHeight + main.offsetTop + mainAdjust)
	
	if(parseInt(pageHeight) > maxHeight && parseInt(pageHeight) > mainHeight)
	{
		footer.style.top = pageHeight - footer.clientHeight + "px";
		cont.style.height = "";
	}
	else
	{
		footer.style.top = (mainHeight > maxHeight ? mainHeight : maxHeight) - footer.clientHeight + "px";
		
		var height = pageScrollHeight < maxHeight ? maxHeight : pageScrollHeight;
		if(repositionPageElementsInit && height == pageScrollHeight)
		{
			// slight height adjust, not certain why needed
			height += 50;
		}
		cont.style.height = height + "px";
	}



	// show the footer
	footer.style.visibility = "visible";
	
	repositionPageElementsInit = false;
}


var tickerTimeout = null;
var tickerItems = new Array();
function tickerTween(p_no)
{
	
	// init the array
	if(tickerItems.length == 0)
	{
		var ticker = document.getElementById("ticker");
		tickerItems = ticker.getElementsByTagName("span");
	}
		
	var itemNo = p_no == null ? Math.floor(Math.random() * tickerItems.length) : p_no >= tickerItems.length ? 0 : p_no;
	
	if(tickerItems.length > 0)
	{	
		tickerItems[itemNo].style.display = "block";
		
		showItem = new Tween(tickerItems[itemNo].style,'top','',-20,0,0,'px');
		showItem.func = Tween.strongEaseOut;
		showItem.continueTo(0,1);
		
		if(tickerItems.length > 1)
		{
			showItem.onMotionFinished = function()
			{
				hideItem = new Tween(tickerItems[itemNo].style,'top','',0,0,0,'px');
				hideItem.func = Tween.strongEaseOut;
				hideItem.onMotionStarted = function()
				{
					tickerTween(itemNo + 1);
				}
				tickerTimeout = setTimeout("hideItem.continueTo(20,1); tickerTimeout= null;", 2500);
			}
		}
	}
	else
	{
		// clear the magnifying glass image
		document.getElementById("mag-glass").style.display = "none";
	}
}


function showVisitLayer()
{
	var v = document.getElementById("visit");
	var vl = document.getElementById("visit-layer");
	if(v.className == "on")
	{
		v.className = "";
	}
	else
	{
		v.className = "on";
	}
	var startTop = v.className == "on" ? 0 - vl.clientHeight : 22;
	var endTop = v.className == "on" ? 22 :  0 - vl.clientHeight;

	showVL = new Tween(vl.style,'top','',startTop,0,0,'px');
	showVL.func = Tween.strongEaseOut;
	showVL.continueTo(endTop,0.5);
}



window.onload = function()
{
	if(document.getElementById("nav"))
	{
		navSelect("nav");
	}
	
	if(document.getElementById("column-cont"))
	{
		navSelect("column-cont");
	}

	if(document.getElementById("column-cont"))
	{
		navSelect("footer");
	}

	tickerTween();
}




function makeHttpRequest(url, callback_function, text_response) {
	var http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Unfortunatelly you browser doesn\'t support this feature.');
		return false;
	}

	http_request.onreadystatechange = function() {
		if (http_request.readyState == 4) {
			if (http_request.status == 200) {
				if(text_response)
				{
					eval(callback_function + '(http_request.responseText)');
				}
				else
				{
					eval(callback_function + '(http_request.responseXML)');
				}
			} else {
				alert('There was a problem with the request for ' + url + '.(Code: ' + http_request.status + ')');
			}
		}
	}

	http_request.open('GET', url, true);
	http_request.send(null);
}



