﻿function navInit(sContainer, sClass, bHoverCurrent) {
    // Attach menu mouseover buttons and highlight the current page if it has a mouseover
    var i,j,navAnchors,navImg,tmpImg;
    navAnchors = document.getElementById(sContainer).getElementsByTagName("a");
    for(i=0;i<navAnchors.length;i++) {
        if( navAnchors[i].className == sClass ) {
            navImg = navAnchors[i].firstChild;
            while( navImg.nextSibling && navImg.nodeName != "IMG" ) {
                navImg = navImg.nextSibling                
            }
            if( navImg && navImg.nodeName == "IMG" ) {
                navAnchors[i].navImg = navImg; 
                navImg.imgHoverOff = navImg.src;
                navImg.imgHoverOn = getNavHoverImgSrc(navImg.src);
                tmpImg = newImage(navImg.imgHoverOn); // preload images
                
                if( bHoverCurrent && navAnchors[i].href.indexOf(location.pathname.replace(/\/$/, "/Default.aspx")) > -1 ) {
                    // show rollover image on page user is currently on
                    navImg.src = navImg.imgHoverOn;
                }
                else {
                    // attach events for displaying rollover images                    
									addEvent(navAnchors[i], 'mouseover', function() { navSwap(this.navImg, this.navImg.imgHoverOn, "show") });
                  addEvent(navAnchors[i], 'mouseout', function() { navSwap(this.navImg, this.navImg.imgHoverOff, "hide") });
                }                                              
            }
        }
    }
    navAnchors = null;
    navImg = null;
    tmpImg=null;


		//attach events to any subnavs
		var subnavs,subNavImg
    subnavs = getElementsByClassName(document, "*", "subnav");    
    for(i=0;i<subnavs.length;i++) {
			subnavs[i].subNavImg = document.getElementById(getNavImgName(subnavs[i].id));									
			subnavs[i].subNavImg.imgHoverOff = subnavs[i].subNavImg.src;
      subnavs[i].subNavImg.imgHoverOn = getNavHoverImgSrc(subnavs[i].subNavImg.src);
                 
			addEvent(subnavs[i], 'mouseover', function() { navSwap(this.subNavImg, this.subNavImg.imgHoverOn, "show") });
			addEvent(subnavs[i], 'mouseout', function() { navSwap(this.subNavImg, this.subNavImg.imgHoverOff, "hide") });
		}	
		
		subNavItem = null;			
		subNavImg = null;
}

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function addEvent( obj, type, fn ) {
    if ( obj.attachEvent ) {
        obj['e'+type+fn] = fn;
        obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
        obj.attachEvent( 'on'+type, obj[type+fn] );
    } else
        obj.addEventListener( type, fn, false );
}

function removeEvent( obj, type, fn ) {
    if ( obj.detachEvent ) {
        obj.detachEvent( 'on'+type, obj[type+fn] );
        obj[type+fn] = null;
    } else
        obj.removeEventListener( type, fn, false );
}


function getNavHoverImgSrc( imgsrc ) {
	return imgsrc.replace(/\.(gif|jpg|png)$/, "-over.$1");
}

function getNavImgName( subnavid ) {
	return subnavid.replace(/_subnav/, "");
}	

/* hide all subnavs */
hideSubNav = function ( ) {				
	var subnavs = getElementsByClassName(document, "*", "subnav");
	for(var i=0;i<subnavs.length;i++) {								
		subnavs[i].style.visibility = "hidden";				
	}	
	
	return false;	
}

showSubNav = function ( subnavid ) {						
	/* show active subnav */				
	if (document.getElementById(subnavid)) {									
		document.getElementById(subnavid).style.visibility = "visible";
	}
	
	return false;
}

navSwap = function ( objimg, objimgsrc, navaction ) {			
	objimg.src = objimgsrc;
	
	/*
	alert(objimg);
	alert(objimg.src);
	*/
	
	/* hide all subnavs */
	hideSubNav();		
	
	if (navaction == "show") {		
		showSubNav(objimg.name + "_subnav");	//show sub nav
	}
	
	return false;
}

//see http://ejohn.org/blog/getelementsbyclassname-speed-comparison/
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all) ? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];     
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}
