// JavaScript Document
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{	// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 	// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();
function showChildMenu(e)
{
	var li = $(e);
	while (li.nodeName.toLowerCase() != "li")
	{
		li = li.parentNode;
		if((li==null) || (li.nodeName=="body"))
		{
			return;
		}
	}
	
	Lib.Dom.Elm.Style.changeStyle(li, "showchild");
}

function hideChildMenu(e)
{
	var li = $(e);
	while (li.nodeName.toLowerCase() != "li")
	{
		li = li.parentNode;
		if((li==null) || (li.nodeName=="body"))
		{
			return;
		}
	}

	Lib.Dom.Elm.Style.changeStyle(li, "hidechild");
}
function hideChildMenuLanguage(e)
{
	var li = $(e);
	while (li.nodeName.toLowerCase() != "li")
	{
		li = li.parentNode;
		if((li==null) || (li.nodeName=="body"))
		{
			return;
		}
	}

	Lib.Dom.Elm.Style.changeStyle(li, "end");
}
function subMenuOver(e)
{
	var ul = $(e);
	
	while(ul.tagName.toLowerCase() != 'ul')
	{
		ul = ul.parentNode;
		
		if(ul.tagName.toLowerCase == 'body')
		{
			return;
		}
	}
	
	
	var a = Lib.Dom.Elm.first(ul.parentNode, "a");
	
	Lib.Dom.Elm.Style.changeStyle(a, "highlightMenu");
}
function subMenuLeave(e)
{
	var ul = $(e);
	while(ul.tagName.toLowerCase() != 'ul')
	{
		ul = ul.parentNode;
		
		if(ul.tagName.toLowerCase == 'body')
		{
			return;
		}
	}
	var a = Lib.Dom.Elm.first(ul.parentNode, "a");

	Lib.Dom.Elm.Style.changeStyle(a, "");
}

function setupMenus()
{
   setupMenu('topMenu');
   //setupMenu('toplinks');
}
function setupMenu(divId){

	if(document.all&&document.getElementById)
	{
		// get menu ul
		var menuTop = document.getElementById(divId);
		
		// get all ul elements inside this ul
		var menuArray = menuTop.getElementsByTagName('ul');	
		
		// for each ul
		for(i=0; i<menuArray.length; i++)
		{		
		
			// // find the parent li element (if there is one)
			var ulParent = menuArray[i].parentNode;
			// // check it is an li (just in case)
			if(ulParent.nodeName == "LI")
			{
				// attach rollover and rollout events the li
				Lib.Dom.addEvent(ulParent, "mouseover", showChildMenu);
				Lib.Dom.addEvent(ulParent, "mouseleave", hideChildMenu);
				
				Lib.Dom.addEvent(menuArray[i], "mouseover", subMenuOver);
				Lib.Dom.addEvent(menuArray[i], "mouseleave", subMenuLeave);
			}
		}
	}
	
}

var topDropMenuOverTimeout = false;
var isOver = false;
function topRightMenuSetup(){
   	var topdrop = $('topnavFarRight');
	Lib.Dom.addEvent(topdrop, "mouseover", Lib.delegate(this, topRightMenuEvent));
	Lib.Dom.addEvent(topdrop, "mouseout", Lib.delegate(this, topRightMenuOffEventTimeout));
}
function topRightMenuEvent(e){
	clearTimeout(topDropMenuOverTimeout);
	if (!isOver){
		
		var dim = Lib.Browser.dim();

		Lib.Dom.Elm.Style.add($('topRightDropDownUL'), {
			'display' : 'block'
		});

		if (($('topRightDropDownUL').clientHeight+$('topRightDropDownUL').offsetTop) > dim.yview){
			Lib.Dom.Elm.Style.add($('topRightDropDownUL'), {
				'height' : (dim.yview - $('topRightDropDownUL').offsetTop) + 'px',
				'overflow'	: 'auto'
			});
		}else {
			Lib.Dom.Elm.Style.add($('topRightDropDownUL'), {
				'height' : 'auto',
				'overflow' : 'visible'
			});
		}
	}
	isOver = true;
}
function topRightMenuOffEventTimeout(){
	topDropMenuOverTimeout = setTimeout("topRightMenuOffEvent()", 100);
}
function topRightMenuOffEvent(){
		isOver = false;
		Lib.Dom.Elm.Style.add($('topRightDropDownUL'), {
			'height' : 'auto',
			'overflow' : 'visible',
			'display' : 'none'
		});
}
if (!Lib.Browser.get().isIE){
callWhenDOMLoaded(topRightMenuSetup);
callWhenDOMLoaded(setupMenus);
}