
var g_selectedWidget = null;

//instance name start, number subelements,
function NavigationElement(id,instanceName,numberElements,imageDir,isMouseOut,sInactiveColor, sActiveColor)
{
	this.id = id;
	this.instanceName = instanceName + "Element";

	this.divObjArr = new Array();
	this.imageArr = new Array();
	this.imgOffObjArr = new Array();
	this.imgOnObjArr = new Array();
	this.imageName =  imageDir + instanceName + "_";
	this.numberElements = numberElements;
	this.selectedElement = -1;
	this.isMouseOut = isMouseOut;
	this.init = false;
	this.inactiveColor = sInactiveColor;
	this.activeColor = sActiveColor;

	// method declarations
	this.changeElementVisibility = changeElementVisibilityMethod;
	this.swapImage 		= swapImageMethod;
	this.activate		= activateMethod;
	this.openElement	= openElementMethod;
	this.setup			= setupMethod;
	this.deactivate		= deactivate;
    this.toggleDropDown = toggleDropDown;

	function setNavElementAttributes(divObj,instanceName,visibleValue,displayValue,isMouseOut)
	{
		if (isMouseOut) BrowserAbstractionLayer.addEventHandler(divObj,"OUT","onMouseOutHandler");
		BrowserAbstractionLayer.setVisibility(divObj,visibleValue)
		BrowserAbstractionLayer.setDisplay(divObj,displayValue)
	}

	function setupMethod()
	{
		for ( x = 0; x < this.numberElements; x++ )
		{
			this.divObjArr[x] = BrowserAbstractionLayer.getDivObj(this.instanceName + x);
			if (typeof this.divObjArr[x] != "undefined")
			{
				setNavElementAttributes(this.divObjArr[x], this.instanceName, "hidden", "none", this.isMouseOut);
			}
		}
		this.init = true;
	}

	function activateMethod(selectedElement)
	{
		if( this.init == false || this.selectedElement == selectedElement ) { return false; };
		if( g_selectedWidget != null) {g_selectedWidget.deactivate();}
		this.deactivate();
		this.selectedElement = selectedElement;
        this.toggleDropDown(false);
		this.changeElementVisibility(this.divObjArr[selectedElement],"visible","");
		var eElement = BrowserAbstractionLayer.getDivObj( this.instanceName + "Parent" + selectedElement );
		BrowserAbstractionLayer.swapBackground( eElement, this.activeColor )
		setHighlightOn(this.selectedElement); // swap parent link color to active color. for white txt on ylw bg
		g_selectedWidget = this;
        return true;
	}

	function deactivate()
	{
		if( this.init == false ) { return false };
		if ( this.selectedElement != -1 )
		{
			var selEl = this.selectedElement;
			this.changeElementVisibility(this.divObjArr[selEl],"hidden","none");
            this.toggleDropDown(true);
			if( this.selectedElement != window.defaultMenuItem ) {
				var eElement = BrowserAbstractionLayer.getDivObj( this.instanceName + "Parent" + selEl );
				BrowserAbstractionLayer.swapBackground( eElement, this.inactiveColor )
			} else {
				//this.swapImage(this.imageArr[selEl],window.defaultMenuImage);
			}
			setHighlightOff(this.selectedElement); // swap parent link color back to inactive color. 
			//for white txt on ylw bg
			this.selectedElement = -1;
			g_selectedWidget = null;
		}
        return true;
	}

	function swapImageMethod(imageObjRef,newImage)
	{
		imageObjRef.src = newImage.src;
	}

	function changeElementVisibilityMethod(obj,visibilityProp,displayProp)
	{
		BrowserAbstractionLayer.setVisibility(obj,visibilityProp);
		BrowserAbstractionLayer.setDisplay(obj,displayProp);
	}

	function openElementMethod(selectedElement)
	{
		this.activate(selectedElement);
		return false;
	}

    function toggleDropDown(bShow)
    {
        eSelects = document.getElementsByTagName("SELECT");
        for( var i=0; i < eSelects.length; i++)
        {
            if( bShow == false && eSelects[i].isHide == "true" )
            {
                eSelects[i].style.visibility = "hidden";
            }
            else
            {
                eSelects[i].style.visibility = "visible";
            }
        }
    }

}

function displayMenu(oNavElement,thisElement){
	eval("if (typeof "+oNavElement+" != 'undefined') "+oNavElement+".openElement(thisElement)");
}

// create object from element id
function setObjectForBrowser(linkID){
	if(document.all &! document.getElementById){
		objElement = document.all[linkID];
	}
	else if (document.getElementById){
		objElement = document.getElementById(linkID);
	}
	return objElement;
}

// set element class to "active" class
function setHighlightOn(ID){
	var linkID = 'topNavElementParentLink' + ID;
	if(!document.layers){
		if(window.defaultMenuItem != ID){
			var elementToChange = setObjectForBrowser(linkID);
			if (elementToChange) {
						elementToChange.className = "topNavElementParentLinkActive";
			}else
			{
			//nothing - global fix for our vendors
			}
			
		}
	}
}

// set element class to "inactive" class
function setHighlightOff(ID){
	var linkID = 'topNavElementParentLink' + ID;
	if(!document.layers){
		if(window.defaultMenuItem != ID){
			var elementToChange = setObjectForBrowser(linkID);
			if (elementToChange) {
						elementToChange.className = "zplain";
			}else
			{
			//nothing - global fix for our vendors
			}
			
		}
	}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
// end supporting functions
/////////////////////////////////////////////////////////////////////////////////////////////////////
