document.g_TabNav = {original: null, current: null, timerID: null};

function preloadImgs(){var d=document;if(d.images){if(!d.G_aImgs)d.G_aImgs=new Array;var i,j,p=d.G_aImgs,l=p.length,a=preloadImgs.arguments;for(i=0;i<a.length;i++){if(typeof(a[i])=='string'){p[l]=new Image;p[l++].src=a[i]}else{for(j=0;j<a[i].length;j++){p[l]=new Image;p[l++].src=a[i][j]}}}}}function getImgsByName(sName,sSep,sStates){var x,d=document,r=new Array;if(d.images){if(x=d.images[sName]){var i,ext,img,pos,st,a=sStates.split(','),s=new Array;ext=x.src.substr(pos=x.src.lastIndexOf('.'));img=x.src.substring(0,pos);st=img.substr((pos=x.src.lastIndexOf(sSep))+1);if((','+sStates+',').indexOf(','+st+',')!=-1)img=img.substring(0,pos);s[0]=x.src;r[r.length]=x.src;for(i=0;i<a.length;i++){s[a[i]]=img+sSep+a[i]+ext;if(s[a[i]]!=x.src)r[r.length]=s[a[i]]}if(!d.G_aSts)d.G_aSts=new Array();d.G_aSts[sName]=s}}return r}function getImgsByPrefix(sPref,sSep,sStates){var d=document,r=new Array;if(d.images){var i,j,n,a=sPref.split(',');for(i=0;i<d.images.length;i++){n=d.images[i];if(n.name){for(j=0;j<a.length;j++){if(n.name.indexOf(a[j])==0){r=r.concat(getImgsByName(n.name,sSep,sStates));break}}}}}return r}function swapState(){var d=document,i,j=0,x,a=swapState.arguments;if(d.images&&d.G_aSts){d.G_sr=new Array;for(i=0;i<(a.length-1);i+=2){if(x=d.images[a[i]]){d.G_sr[j++]=x;x.oSrc=x.src;x.src=d.G_aSts[a[i]][a[i+1]]}}}}function swapImgs(){var d=document,i,j=0,x,a=swapImgs.arguments;if(d.images){d.G_sr=new Array;for(i=0;i<(a.length-1);i+=2){if(x=d.images[a[i]]){d.G_sr[j++]=x;x.oSrc=x.src;x.src=a[i+1]}}}}function swapReset(){var i,x,a=document.G_sr;for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++){x.src=x.oSrc}}

function initNav(navID) {
	var d=document, imgName, oLink, subNav, oSubNav;
	preloadImgs(getImgsByPrefix('nv_','-','over'));
	var aLinks = d.getElementById(navID).getElementsByTagName('a');
	// loop through all links within main navID
	for (var i = 0; i < aLinks.length; i++) {
		oLink = aLinks[i];
		if (subNav = oLink.getAttribute('rel')) {
			if (oSubNav = d.getElementById(subNav)) {
				// check if subnav is already turned on
				if (oSubNav.style.visibility == 'visible') {
					// it is so save original subnav
					d.g_TabNav.original = oLink;
					d.g_TabNav.current = oLink;
				}
				oLink.img = oLink.firstChild;
				oLink.img.oSrc = oLink.img.src;
				oLink.subNav = oSubNav;
				oLink.onmouseover = showSubNav;
				oLink.onmouseout = hideSubNavCheck;
				oSubNav.mainnav = oLink;
				oSubNav.onmouseover = clearNavTimer;
				oSubNav.onmouseout = hideSubNavCheck;
			}
		}
	}
}

function showSubNav() {
	// displays mainnav rollover and subnav bar
	var t = document.g_TabNav;
	// check for timeout, if it exists, then clear it
	if (t.current)
		hideSubNav();
	// set current mainnav
	t.current = this;
	var oImg = this.img;
	// swap image
	if (oImg.src != document.G_aSts[oImg.name]['down'])
		oImg.src = document.G_aSts[oImg.name]['over'];
	// show subnav
 	this.subNav.style.visibility = 'visible';
}

function hideSubNavCheck(event) {
	// if user mouses out of link or subnav bar, then rollout mainnav and hide subnav
	var oTest, related;
	// check for function caller of mainnav or subnav
	if (this.subNav) {
		// caller is mainnav
		oTest = this.subNav;
	} else {
		// caller is subnav
		oTest = this;
	}
	related = (window.event) ? window.event.toElement : event.relatedTarget;
	// if mouse not moving into subnav and not within subnav
	if (related && oTest != related && !contains(oTest, related)) {
		resetSubNav();
	}
}

function resetSubNav() {
	// resets subnav with a 2 sec delay
	document.g_TabNav.timerID = window.setTimeout('hideSubNav(true)', 500);
}

function hideSubNav(showOriginal) {
	// resets subnav states
	clearNavTimer();	// clear any timers
	var t = document.g_TabNav;
	// if set, hide current nav
	if (t.current) {
		t.current.img.src = t.current.img.oSrc;
		t.current.subNav.style.visibility = 'hidden';
		t.current = null;
	}
	// if allowed and set, show original nav
	if (showOriginal && t.original) {
		t.original.subNav.style.visibility = 'visible';
		t.current = t.original;
	}
}

function clearNavTimer() {
	// if set, reset timeout
	var t = document.g_TabNav;
    if(typeof t.timerID == 'number') {
      window.clearTimeout(t.timerID);
      t.timerID = null;
    }
}

function contains(a, b) {
	// Return true if node a contains node b.
	while (b.parentNode)
		if ((b = b.parentNode) == a)
			return true;
	return false;
}
