﻿var iNavigate=new Object()

iNavigate.closeSiblings = true;

iNavigate.Activate = function(id)
{
    var xoNode = document.getElementById(id).getElementsByTagName('ul');
    var sState = iNavigate.GetStateCookie(id);
 
    for (var n=0; n<xoNode.length; n++)
    {
        var oSpan = xoNode[n].parentNode.firstChild;
    
        if ((sState.substring(n, n+1) == '1') && (xoNode[n].style.display == 'none'))
        {
            oSpan.className = oSpan.className.replace('Closed', 'Open');
            xoNode[n].style.display = 'block';
        }
        oSpan.onclick = iNavigate.ToggleNode;
    }
    window.onunload = function() {iNavigate.SaveStateCookie(id)};
}

iNavigate.ToggleNode = function(evt)
{
    var oNode = this.parentNode.getElementsByTagName('ul')[0];
    
    //var bHasLink = this.getElementsByTagName('a').length > 0;
    //var bToggle = !bHasLink || (bHasLink && oNode.className.indexOf('iNavClosed') != -1)
    //var bToggle = !bHasLink || (bHasLink && oNode.style.display=='none');
    var bToggle = true;
    
    if (bToggle)
    {
        if (this.className.indexOf('iNavClosed') == 0) 
        {
            this.className = this.className.replace('Closed', 'Open');
            oNode.style.display = 'block';
        }
        else
        {
            this.className = this.className.replace('Open', 'Closed');
            oNode.style.display = 'none';
        }

        var sLevel = iNavigate.getLastChar(this.className);
       
        if (iNavigate.closeSiblings == true)
        {
            var xoNode = this.parentNode.parentNode.getElementsByTagName('span');

            for (var n=0; n<xoNode.length; n++)
            {
                if (sLevel == iNavigate.getLastChar(xoNode[n].className))
                {
                    if (this != xoNode[n])
                    {
                        xoNode[n].className = xoNode[n].className.replace('Open', 'Closed');
                        xoNode[n].parentNode.getElementsByTagName('ul')[0].style.display = 'none';
                    }
                }
            }
        }
    }
    
    if (typeof evt != 'undefined')
    {
        evt.stopPropagation()
    }
    else
    {
        event.cancelBubble=true
    }
}

iNavigate.SaveStateCookie = function(id)
{
    var sCookie = ''
    var xoNode=document.getElementById(id).getElementsByTagName('ul');
 
    for (var n=0; n<xoNode.length; n++)
    {
        sCookie += xoNode[n].style.display == 'none' ? '0' : '1'
    }
    document.cookie = 'iNav.' + id + '=' + sCookie + '; path=/';
}

iNavigate.GetStateCookie = function(id)
{
    var sCookie = document.cookie;
    var sSignature = 'iNav.' + id + '=';

    var nStart = sCookie.indexOf(sSignature);

    if (nStart == -1)
    {
        sCookie = '';
    }
    else
    {
        sCookie = sCookie.substring(nStart + sSignature.length);

        nStart = sCookie.indexOf(';');

        if (nStart > -1)
        {
            sCookie = sCookie.substring(0, nStart)
        }
    }
    return sCookie;
}

iNavigate.getLastChar = function(string)
{
    return string.substring(string.length - 1, string.length);
}