//DD Tab Menu- Script rewritten April 27th, 07: http://www.dynamicdrive.com
//**Updated Feb 23rd, 08): Adds ability for menu to revert back to default selected tab when mouse moves out of menu

//Only 2 configuration variables below:

var ddtabmenu = {
    disabletablinks: false, //Disable hyperlinks in 1st level tabs with sub contents (true or false)?
    snap2original: [true, 300], //Should tab revert back to default selected when mouse moves out of menu? ([true/false, delay_millisec]

    currentpageurl: window.location.href.replace("http://" + window.location.hostname, "").replace(/^\//, ""), //get current page url (minus hostname, ie: http://www.dynamicdrive.com/)

    definemenu: function (tabid, dselected) {
        this[tabid + "-menuitems"] = null
        this[tabid + "-dselected"] = -1
        this.addEvent(window, function () { ddtabmenu.init(tabid, dselected) }, "load")
    },

    showsubmenu: function (tabid, targetitem, stateOut) {
        var menuitems = this[tabid + "-menuitems"]
        this.clearrevert2default(tabid)
        for (i = 0; i < menuitems.length; i++) {
            menuitems[i].className = ""
            if (typeof menuitems[i].hasSubContent != "undefined") {
                var objItems = document.getElementById(menuitems[i].getAttribute("rel"));
                objItems.style.display = "none";
                if (!stateOut) {
                    if (objItems.id == 'mnu6') {
                        objItems.className = 'tabcontent mnu6';
                    }
                    if (objItems.id == 'mnu7') {
                        objItems.className = 'tabcontent mnu7';
                    }
                    if (objItems.id == 'mnu8') {
                        objItems.className = 'tabcontent mnu8';
                    }
                    if (objItems.id == 'mnu9') {
                        objItems.className = 'tabcontent mnu9';
                    }
                    if (objItems.id == 'mnu10') {
                        objItems.className = 'tabcontent mnu10';
                    }
                    if (objItems.id == 'mnu11') {
                        objItems.className = 'tabcontent mnu11';
                    }
                    if (objItems.id == 'mnu12') {
                        objItems.className = 'tabcontent mnu12';
                    }
                }
            }
        }
        targetitem.className = "current"
        document.getElementById("searchID").style.display = "";
        if (typeof targetitem.hasSubContent != "undefined") {
            var objItems = document.getElementById(targetitem.getAttribute("rel"));
            objItems.style.display = "block";
            // alert(objItems.id);
            //document.getElementById(targetitem.getAttribute("rel")).style.display = "block";
            if (stateOut) {
                if (objItems.id == 'mnu6') {
                    objItems.className = 'tabcontent amnu6';
                }
                if (objItems.id == 'mnu7') {
                    objItems.className = 'tabcontent amnu7';
                }
                if (objItems.id == 'mnu8') {
                    objItems.className = 'tabcontent amnu8';
                }
                if (objItems.id == 'mnu9') {
                    objItems.className = 'tabcontent amnu9';
                }
                if (objItems.id == 'mnu10') {
                    objItems.className = 'tabcontent amnu10';
                }
                if (objItems.id == 'mnu11') {
                    objItems.className = 'tabcontent amnu11';
                }
                if (objItems.id == 'mnu12') {
                    objItems.className = 'tabcontent amnu12';
                }
            }
        }
    },

    isSelected: function (menuurl) {
        var menuurl = menuurl.replace("http://" + menuurl.hostname, "").replace(/^\//, "")
        return (ddtabmenu.currentpageurl == menuurl)
    },

    isContained: function (m, e) {
        var e = window.event || e
        var c = e.relatedTarget || ((e.type == "mouseover") ? e.fromElement : e.toElement)
        while (c && c != m) try { c = c.parentNode } catch (e) { c = m }
        if (c == m)
            return true
        else
            return false
    },

    revert2default: function (outobj, tabid, e) {
        if (!ddtabmenu.isContained(outobj, tabid, e)) {
            window["hidetimer_" + tabid] = setTimeout(function () {
                ddtabmenu.showsubmenu(tabid, ddtabmenu[tabid + "-dselected"], true)
            }, ddtabmenu.snap2original[1])
        }
    },

    clearrevert2default: function (tabid) {
        if (typeof window["hidetimer_" + tabid] != "undefined")
            clearTimeout(window["hidetimer_" + tabid])
    },

    addEvent: function (target, functionref, tasktype) { //assign a function to execute to an event handler (ie: onunload)
        var tasktype = (window.addEventListener) ? tasktype : "on" + tasktype
        if (target.addEventListener)
            target.addEventListener(tasktype, functionref, false)
        else if (target.attachEvent)
            target.attachEvent(tasktype, functionref)
    },

    init: function (tabid, dselected) {
        var menuitems = document.getElementById(tabid).getElementsByTagName("a")
        this[tabid + "-menuitems"] = menuitems
        for (var x = 0; x < menuitems.length; x++) {
            if (menuitems[x].getAttribute("rel")) {
                this[tabid + "-menuitems"][x].hasSubContent = true
                if (ddtabmenu.disabletablinks)
                    menuitems[x].onclick = function () { return false }
                if (ddtabmenu.snap2original[0] == true) {
                    var submenu = document.getElementById(menuitems[x].getAttribute("rel"))
                    menuitems[x].onmouseout = function (e) { ddtabmenu.revert2default(submenu, tabid, e) }
                    submenu.onmouseover = function () { ddtabmenu.clearrevert2default(tabid); document.getElementById('searchID').style.display = 'none'; }
                    submenu.onmouseout = function (e) { ddtabmenu.revert2default(this, tabid, e); }
                }
            }
            else //for items without a submenu, add onMouseout effect
                menuitems[x].onmouseout = function (e) {
                    this.className = "";

                    if (ddtabmenu.snap2original[0] == true) ddtabmenu.revert2default(this, tabid, e)
                }
            menuitems[x].onmouseover = function () {
                ddtabmenu.showsubmenu(tabid, this, false);
            
                document.getElementById('searchID').style.display = 'none';
            }
            if (dselected == "auto" && typeof setalready == "undefined" && this.isSelected(menuitems[x].href)) {
                ddtabmenu.showsubmenu(tabid, menuitems[x], true)
                this[tabid + "-dselected"] = menuitems[x]
                var setalready = true
            }
            else if (parseInt(dselected) == x) {
                ddtabmenu.showsubmenu(tabid, menuitems[x], true)
                this[tabid + "-dselected"] = menuitems[x]
            }
        }
    }
}
