/*
    Author: Joe Tan
    Email: jtan@silaspartners.com

    Drop down menus initialization code

*/    

window._silas_outgoingNav = Array()
window._silas_incomingNav = Array()
window._silas_menuCount = 1
window._silas_tmpCount = 0;

function initializeNav(navID, menuElemName, menuItemElemName, dropDownLevels) {
    initializeMenus(navID, menuElemName, menuItemElemName, 1)
    initializeMenuItems(navID, menuElemName, menuItemElemName)
}

function initializeMenus(navID, menuElemName, menuItemElemName, dropDownLevels) {
    var nav = null
    if (typeof navID == 'object') {
        nav = navID
    } else {
        nav = getElem(navID);
    }
    
    var i,j,k;
    if (!nav._silas_dropDownLevel) {
        nav._silas_dropDownLevel = dropDownLevels
    } else if (nav._silas_dropDownLevel < dropDownLevels) {
        nav._silas_dropDownLevel = dropDownLevels
    } else {
        return
    }
    nav.className  = 'menu ' + _silas_makeLevelClass(nav._silas_dropDownLevel)
    if (!nav.id) nav.id = 'silas_menuID_'+ (window._silas_menuCount++)
    
    var items = nav.getElementsByTagName(menuItemElemName)
    for (j=0;j<items.length;j++) {
        if (!items[j]._silas_origClassName) {
            items[j]._silas_origClassName = items[j].className + ' '
//        } elseif (items[j]._silas_origClassName != 'blank' {
//            items[j]._silas_origClassName = 'blank'
        }
        items[j].className = (items[j]._silas_origClassName != 'blank' ? items[j]._silas_origClassName + ' ' : '') + 'menu '+ _silas_makeLevelClass(nav._silas_dropDownLevel)
        items[j]._silas_dropDownLevel = nav._silas_dropDownLevel 
    }
    items[0].className += " first"
    items[items.length-1].className += " last"
    if (nav.parentNode) {
        nav.parentNode._silas_menuID = nav.id
        nav.parentNode.className += ' submenu'
    }

    // recursivly initialize submenus below
    var menus = nav.getElementsByTagName(menuElemName)
    for (i=0;i<menus.length;i++) {
        initializeMenus(menus[i], menuElemName, menuItemElemName, dropDownLevels+1)
    }


}

function initializeMenuItems(navID, menuElemName, menuItemElemName) {
    var nav = getElem(navID);
    var tabs = GetElementsWithClassName(menuItemElemName, 'menu', nav)

    var i
    for (i=0;i<tabs.length;i++) {
        tabs[i]._silas_ID = i // give each item a unique id
        _silas_fixLinks(tabs[i])

        // event handlers, only if there's a submenu
        if (tabs[i]._silas_menuID) {
            tabs[i]._silas_showDropDown = _silas_showDropDown
            tabs[i]._silas_hideDropDown = _silas_hideDropDown
            tabs[i].onmouseover = _silas_onmouseover
            tabs[i].onmouseout  = _silas_onmouseout
        }
    }

}

if (typeof SilasPage == "function") SilasPage.addOnLoad(function () { initializeNav('silas_mainNav', 'ul', 'li') } )


function _silas_fixLinks(obj) {
    var a = obj.getElementsByTagName('a');
    if (a && a.length) {
        var label = _silas_makeLabelClass(a[0].innerHTML)
        a[0].innerHTML = '<span>'+a[0].innerHTML+'</span>'
        a[0].className = obj.className +' '+ label
        obj.className += ' '+ label
    }
}

function _silas_makeLevelClass(level) {
    return "menu_"+level
}
function _silas_makeLabelClass(label) {
    var regexp = new RegExp("\\W", "gi")
    return label.toLowerCase().replace(regexp, '')
}

function _silas_showDropDown() {
    if (!this._silas_classNameOrig) this._silas_classNameOrig = this.className;
    this.className += ' '+_silas_makeLevelClass(this._silas_dropDownLevel)+'_hover';

    var menu = getElem(this._silas_menuID)
    if (menu) showDisplayElem(menu)

    if (this._silas_hideTimer) clearTimeout(this._silas_hideTimer)
    if (this._silas_showTimer) clearTimeout(this._silas_showTimer)
}

function _silas_hideDropDown() {
    if (this._silas_classNameOrig) this.className = this._silas_classNameOrig
    this._silas_classNameOrig = false
    var menu = getElem(this._silas_menuID)
    if (menu) hideDisplayElem(menu)
    
    if (this._silas_hideTimer) clearTimeout(this._silas_hideTimer)
    if (this._silas_showTimer) clearTimeout(this._silas_showTimer)
}

function _silas_onmouseover () {
    if (this._silas_hideTimer) clearTimeout(this._silas_hideTimer)
    if (window._silas_outgoingNav[this.parentNode.id]) {
        if (this._silas_showTimer) clearTimeout(this._silas_showTimer)
        if (window._silas_outgoingNav[this.parentNode.id]._silas_ID != this._silas_ID) {
            window._silas_incomingNav[this.parentNode.id] = this
            this._silas_showTimer = setTimeout("_silas_showNav('"+this.parentNode.id+"')", 250)
        } 
    } else {
        window._silas_incomingNav[this.parentNode.id] = this
        this._silas_showTimer = setTimeout("_silas_showNav('"+this.parentNode.id+"')", 250)
    }
}

function _silas_onmouseout () {
    if (this._silas_showTimer) clearTimeout(this._silas_showTimer)
    if (this._silas_classNameOrig) {
        window._silas_outgoingNav[this.parentNode.id] = this
        if (this._silas_hideTimer) clearTimeout(this._silas_hideTimer)
        this._silas_hideTimer = setTimeout("_silas_hideNav('"+this.parentNode.id+"')", 750)
    } else {
    }
}



function _silas_showNav(id) {
    if (window._silas_outgoingNav[id]) {
        window._silas_outgoingNav[id]._silas_hideDropDown()
        if (window._silas_outgoingNav[id].silas_hideTimer) clearTimeout(window._silas_outgoingNav[id].silas_hideTimer)
        if (window._silas_outgoingNav[id].silas_showTimer) clearTimeout(window._silas_outgoingNav[id].silas_showTimer)
    }
    if (window._silas_incomingNav[id]) window._silas_incomingNav[id]._silas_showDropDown();
    window._silas_incomingNav[id] = false
}

function _silas_hideNav(id)  {
    if (window._silas_outgoingNav[id]) {
        if (window._silas_incomingNav[id]) {
            if (window._silas_outgoingNav[id]._silas_ID != window._silas_incomingNav[id]._silas_ID) {
                window._silas_outgoingNav[id]._silas_hideDropDown();
                window._silas_outgoingNav[id] = false
            }
        } else {
            window._silas_outgoingNav[id]._silas_hideDropDown();
            window._silas_outgoingNav[id] = false
        }
    }
}