
//Javascript for navigation menu
// http://juicystudio.com/displayarticle.php/ecmascriptmenu.php?page=ecmascriptmenu.php#collapsible

window.onload=rollup;

var menuState = 'closed';

function setMenuState(){
	var objMenu = document.getElementById('mainnav');
	objMenu.style.background ='url(\'../graphics/arrow_opened.gif\')';
	if ( menuState == 'closed') {
		menuState = 'open';
	}
	else
	{
		menuState = 'closed';
	}
	//rollup();
}

function rollout(objMenuitem, objEvent)
{
    var iKeyCode;

    // Check if from a keyboard - non IE, but
    // irrelevant as tab doesn't trigger the 
    // keypress event in IE
    if (objEvent && objEvent.type == 'keypress')
    {
        if (objEvent.keyCode)
            iKeyCode = objEvent.keyCode;
        else if (objEvent.which)
            iKeyCode = objEvent.which;

        // If it's not the enter key or space key, 
        // pass control back to the browser
        if (iKeyCode != 13 && iKeyCode != 32)
            return true;
    }

    // Work out what we need to do
    if (objMenuitem.nextSibling.style.display == 'block')
        var strDisplay = 'none'
    else
        var strDisplay = 'block';

    // Close any nested lists that are open
    var objMenu = document.getElementById('mainnav');
    var objNested = objMenu.getElementsByTagName('ul');
    for (var i=0; i<objNested.length; i++)
        if (objNested[i].style.display == 'block')
            objNested[i].style.display = 'none';

    objMenuitem.nextSibling.style.display = strDisplay;
    
    // Keep any parent menus for this item open
    while (objMenuitem.parentNode.parentNode.id != 'mainnav')
    {
        objMenuitem = objMenuitem.parentNode.parentNode;
        objMenuitem.style.display = 'block';
    }

    // Stop the browser requesting the link
    return false;
}

function rollup()
{
    var  bRollup, objLinks, objNode, objAnchor;
		
    // Check we're working with a DOM compliant browser
    if (document.getElementById && document.createElement)
    {
        var strLocation = window.location;
        var objMenu = document.getElementById('mainnav');
        var objNested = objMenu.getElementsByTagName('ul');
        // Hide each of the nested unordered list
        for (var i=0; i<objNested.length; i++)
        {
            // Only hide, if the current location is not found in the list
           (menuState == 'closed')? bRollup = true: bRollup = false;
			//bRollup = true;
            objLinks = objNested[i].getElementsByTagName('a');

            for (var j=0; j<objLinks.length; j++)
            {
                if (objLinks[j].href == strLocation)
                {
                     bRollup = true;
					
                    // Added by John Hunter
                    // remove link for current page
                    objNode = objLinks[j];
                    strContent = objNode.firstChild.data;
					// make sure no non-alphanumeric chars (in case of LFCR)
					//strContent = strContent.replace(/[^a-zA-Z 0-9]+/g,'');
                    var objCurrentPage = document.createElement('span');
					objCurrentPage.className = "selectedItem";
                    objCurrentPage.appendChild(document.createTextNode(strContent));
                    objNode.parentNode.replaceChild(objCurrentPage, objNode);

                    // Add an id so we can keep the parents open
                    objCurrentPage.id = 'jsKeepOpen';
                }

            }

            if (bRollup == true)
                objNested[i].style.display = 'none';
            else
                objNested[i].style.display = 'block';

            // Place the top-level text in an anchor tag
            objNode = objNested[i].parentNode;

            strContent = objNode.firstChild.data;

            objAnchor = document.createElement('a');
            objAnchor.href = '#';
            objAnchor.onclick = function(event){return rollout(this, event);}
            objAnchor.onkeypress = function(event){return rollout(this, event);}
            objAnchor.appendChild(document.createTextNode(strContent));

            objNode.replaceChild(objAnchor, objNode.firstChild);
        }

        // Keep any parent menus for the current item
        if (document.getElementById('jsKeepOpen'))
        {
            var objKeepOpen = document.getElementById('jsKeepOpen');
            while (objKeepOpen.parentNode.id != 'mainnav')
            {
                objKeepOpen = objKeepOpen.parentNode;
                objKeepOpen.style.display = 'block';
            }
        }
    }
	objMenu.style.visibility = 'visible';
}

/* if (objAnchor) {
	objAnchor.onclick = function(){return rollout(this);}
	objAnchor.onkeypress = function(){return rollout(this);}
}
*/
/* Other functions */

function toggle(obj) {
	divName = obj.name;
	divName = divName.substr(4,divName.length - 3);
	figNum = divName.substr(4,divName.length -1);
	divObj = document.getElementById(divName);
	txtSpanID = 'Label' + divName;
	spanObj = document.getElementById(txtSpanID);
	if(divObj.style.display=="none" || divObj.style.display=="")
	{
		obj.src="../images/arrow_opened.gif";
		divObj.style.display="block";
		spanObj.innerHTML = '&nbsp;&nbsp;(Hide Fig. ' + figNum + ')&nbsp;';
	}
	else 
	{
		obj.src="../images/arrow_closed.gif"
		divObj.style.display="none";
		spanObj.innerHTML = '&nbsp;&nbsp;(Show Fig. ' + figNum + ')&nbsp;';
	}
}

function setStyle(tableRowObj, whichStyle){
	if (whichStyle =='selectRow') {
		tableRowObj.style.background='#FFFCC9';
	} else {
		tableRowObj.style.background='transparent';
	}
}
