/**********************************************************************************
 * menus.js - handles the navagation drop down menus
 **********************************************************************************/
var bLoaded = false;
var dom = (document.getElementById != null);
var ie = (document.all != null);
var ns = (document.layers != null);

function getEl(id) {
	var obj;
	if (dom) {
		obj = document.getElementById(id);
	} else if (ie) {
		obj = eval("document.all." + id);
	} else if (ns) {
		obj = eval("document.layers[\"" + id + "\"]");
	}
	return obj;
}

function showEl(obj) {
	if ((obj == null) || (!bLoaded)) return;
	if (dom) {
		obj.style.visibility = "visible";
	} else if (ie) {
		obj.style.visibility = "visible";
	} else if (ns) {
		obj.visibility = "visible";
	}
}

function hideEl(obj) {
	if ((obj == null) || (!bLoaded)) return;
	if (dom) {
		obj.style.visibility = "hidden";
	} else if (ie) {
		obj.style.visibility = "hidden";
	} else if (ns) {
		obj.visibility = "hidden";
	}
}

function findPosX(obj) {
	var curleft = 0;
	if (document.getElementById || document.all) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (document.layers)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (document.getElementById || document.all) 	{
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (document.layers)
		curtop += obj.y;
	return curtop;
}

function hideSelects(obj) {
	if (!document.all) return;
	var ary = document.getElementsByTagName("SELECT");
	var i;
	for (i=0; i<ary.length; i++) {
		var x = findPosX(ary[i]);
		var y = findPosY(ary[i]);
		var w = ary[i].offsetWidth;
		var mb = eval(obj.style.top.replace("px", "")) + obj.offsetHeight;
		var l = eval(obj.style.left.replace("px", ""));
		var ml = l + obj.offsetWidth;
		if (y <= mb) {
			if ((x >= l && x <= ml) || (x+w >= l && x+w <= ml) || (x <= l && x+w >= ml))
				ary[i].style.visibility = "hidden";
		}
	}
}

function showSelects() {
	if (!document.all) return;
	var ary = document.getElementsByTagName("SELECT");
	var i;
	for (i=0; i<ary.length; i++) {
		if ((ary[i].style.visibility == "hidden") && (ary[i].disabled == false))
			ary[i].style.visibility = "";
	}
}

function showMenu(controlid) {
	showEl(getEl("menuTabHover" + controlid));
	showEl(getEl("menu" + controlid));
	showEl(getEl("mousetrap"));
	hideSelects(getEl("menu" + controlid));
	return;
}

function hideMenu(controlid) {
	hideEl(getEl("menuTabHover" + controlid));
	hideEl(getEl("menu" + controlid));
	return;
}

function hideAll() {
	var i = 1;
	var obj = getEl("menuTabHover" + i);
	while (obj != null) {
		hideMenu(i);
		obj = getEl("menuTabHover" + (++i));
	}
}

function mouseTrap() {
	hideAll();
	hideEl(getEl("mousetrap"));
	showSelects();
}

var clientAreaX = 0;
var clientAreaY = 0;
function handleResize() {
	depositionMenus();
	clientAreaX = getViewportWidth();
	clientAreaY = getViewportHeight();
	document.getElementById("mousetrapImg").width = clientAreaX;
	document.getElementById("mousetrapImg").height = clientAreaY - 10;
	positionMenus();
	bLoaded = true;
}

function depositionMenus() {
	var i = 1;
	var x;
	var obj = getEl("menu" + i);
	while (obj != null) {
		obj.style.left = "0px";
		obj = getEl("menu" + (++i));
	}
}

function positionMenus() {
	var i = 1;
	var x;
	var obj = getEl("menu" + i);
	while (obj != null) {
		x = eval(obj.getAttribute("xpos"));
		if (x + obj.offsetWidth > clientAreaX) x -= (x + obj.offsetWidth - clientAreaX);
		obj.style.left = x + "px";
		hideMenu(i);
		obj = getEl("menu" + (++i));
	}
	obj = getEl("contentControl");
	if (obj != null) {
		obj.style.left = (clientAreaX - 79) + "px";
		if (getEl("banner") == null) {
			obj.style.top = "66px";
		}
	}

	var availHeight = getAvailHeight();
	var footerHeight = 0;
	obj = getEl("sizer");
	var contentArea = getEl("contentArea");
	if (obj != null) {
		if (getEl("footer") != null) {
			footerHeight = getEl("footer").offsetHeight;
			if ((!document.all) && (getEl("banner") == null))
				footerHeight += 15;
		}
        	var clientY = getViewportHeight();
	        var extra = 0;
	        var banner = 0;
	        if(getEl("banner") != null) {
	            banner = 79;
	        }
	        var browser = navigator.appName;

	        if(browser.indexOf('Netscape') != -1) {
	            //Netscape seems to have about a 40px 'extension issue'.
	            extra += 15;
	        }
	        var optnFooter = getEl("optnFooter");
	        var optnAdjust = 0;
	        if(optnFooter != null) {
	            optnAdjust = optnFooter.offsetHeight + 43 - extra;
	        }

		if(!document.getElementById('i_gsa')) {
		        var newHeight = (availHeight - banner - 112 - footerHeight - optnAdjust);
		        if( (newHeight + extra) > (contentArea.offsetHeight)) {
		            obj.style.height = newHeight + "px";
		        }
		}

	}
}

function getViewportWidth() {
	var width = 0;
	if( document.documentElement && document.documentElement.clientWidth )
		width = document.documentElement.clientWidth;
	else if( document.body && document.body.clientWidth )
		width = document.body.clientWidth;
	else if( window.innerWidth )
		width = window.innerWidth - 18;
	return width;
}

function getViewportHeight() {
	var height = 0;
	if( document.documentElement && document.documentElement.clientHeight )
		height = document.documentElement.clientHeight;
	else if( document.body && document.body.clientHeight )
		height = document.body.clientHeight;
	else if( window.innerHeight )
		height = window.innerHeight - 18;
	return height;
}

function getAvailHeight() {
	var height = 0;
	if( document.all && document.documentElement && document.documentElement.offsetHeight )
		height = document.documentElement.offsetHeight;
	else if( window.innerHeight )
		height = window.innerHeight + 4;
	else if( document.body && document.body.scrollHeight )
		height = document.body.scrollHeight;
	return height;
}

function openLink(link, target) {
	//if (target == "_self")
	//	window.location.href = link;
	//else
	if (target == null) target = "_self";
	window.open(link, target);
}

function increaseContent() {
	var obj;
	var i = 1;
	var px = 12;
	obj = document.getElementById("content" + i++);
	if (obj != null && obj.style.fontSize != "")
		px = eval(obj.style.fontSize.replace("px",""));
	if (px >= 20) return;
	px++;
	while (obj != null) {
		obj.style.fontSize = px + "px";
		obj = document.getElementById("content" + i++);
	}
	saveFaceSize(px);
}

function decreaseContent() {
	var obj;
	var i = 1;
	var px = 12;
	obj = document.getElementById("content" + i++);
	if (obj != null && obj.style.fontSize != "")
		px = eval(obj.style.fontSize.replace("px",""));
	if (px <= 8) return;
	px--;
	while (obj != null) {
		obj.style.fontSize = px + "px";
		obj = document.getElementById("content" + i++);
	}
	saveFaceSize(px);
}

function saveFaceSize(fontSize) {
	var expire = new Date ();
	  	expire.setTime (expire.getTime() + (6000 * 24 * 3600000)); //expires in 6 days from users clock
	  	expire = expire.toGMTString();
	document.cookie="fontSize="+fontSize+"; path=/; expires="+expire;
}

function toolbarItemMouseOut(obj) {
	obj.parentNode.previousSibling.style.display = "none";
}
function toolbarItemMouseOver(obj) {
	obj.parentNode.previousSibling.style.display = "block";
}

function siteSearch() {
	var obj = document.getElementById("siteSearch");
	if (obj.value.length > 0)
		document.forms.frmSiteSearch.submit();
	else
		alert("Please enter your search query");
}
function siteSearch2() {
	var obj = document.getElementById("siteSearch2");
	if (obj.value.length > 0)
		document.forms.frmSiteSearch2.submit();
	else
		alert("Please enter your search query");
}

function toggleElement(id) {
	var obj = document.getElementById(id);
	
	if (obj.style.display == "none")
		obj.style.display = "block";
	else
		obj.style.display = "none";
    //alert('Called me.');
    //handleResize();
}



