//Mouseover Tabs Menu: By http://www.dynamicdrive.com
//** Aug 4th, 08': Script creation date

var mouseovertabsmenu={

disappeardelay: 250, //set delay in miliseconds before sub menu disappears onmouseout
ajaxloadingmsg: 'Loading Sub Menu...', //Message to show inside sub menu while fetching contents

///////No need to edit beyond here//////////////////////

tabsmenutree:{},

initializetabs:function(tabsmenuid, submenuid, tabcontentsLength, disappearBool){
    var tabmenu=document.getElementById(tabsmenuid)
    var tablinks=tabmenu.getElementsByTagName("a")
    var submenu=document.getElementById(submenuid)
    var selected=null, tablinks_count=0
    for (var i=0; i<tablinks.length; i++){
        tablinks[i]._parentid=tabsmenuid
        var relattr=tablinks[i].getAttribute("rel")
        if (/^gotsubmenu/i.test(relattr) && tablinks_count<tabcontentsLength){ //if "rel" attribute starts with="gotsubmenu" and a tab content exists for this tab based on its order
        tablinks[i]._pos=tablinks_count //remember position of this tab relative to its active peers
        if (relattr.indexOf("[selected]")!=-1){
                selected=tablinks_count
            }
        this.addEvent(tablinks[i], function(){
                var tabsmenutree=mouseovertabsmenu.tabsmenutree[this._parentid]
                mouseovertabsmenu.clearhidetimer(tabsmenutree.submenu.hidetimer)
                mouseovertabsmenu.showsubmenu(this)
            }, "mouseover")
            tablinks_count++
            this.tabsmenutree[tabsmenuid].tabs.push(tablinks[i]) //add this tab to tab collection
        }
        else{ //else for regular tab links (with no "rel" attribute)
            this.addEvent(tablinks[i], function(){
                mouseovertabsmenu.hidesubmenu(this._parentid)
            }, "mouseover")
        }
    }
    this.addEvent(submenu, function(e){
        mouseovertabsmenu.clearhidetimer(this.hidetimer)
    }, "mouseover")
    if (disappearBool==true){
        this.addEvent(submenu, function(e){ //hide submenu contents when mouse rolls out of submenu DIV
            if (!mouseovertabsmenu.isContained(this, e)){
                var cursubmenuobj=this
                this.hidetimer=setTimeout(function(){mouseovertabsmenu.hidesubmenu(cursubmenuobj._parentid)}, mouseovertabsmenu.disappeardelay)
            }
        }, "mouseout")
    }
    var urlselected=this.urlparamselect(tabsmenuid)
    //return position of selected tab (relative to its peers), or null
    return typeof urlselected=="number"? urlselected : document.getElementById(urlselected)? document.getElementById(urlselected)._pos : selected
},

ajaxload:function(tabsmenuid, submenuid, disappearBool, url){
    var page_request = false
    if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
        try {
        page_request = new ActiveXObject("Msxml2.XMLHTTP")
        } 
        catch (e){
            try{
            page_request = new ActiveXObject("Microsoft.XMLHTTP")
            }
            catch (e){}
        }
    }
    else if (window.XMLHttpRequest) // if Mozilla, Safari etc
        page_request = new XMLHttpRequest()
    else
        return false
    var tabsmenutree=this.tabsmenutree[tabsmenuid]
    tabsmenutree.submenu.innerHTML=this.ajaxloadingmsg
    var ajaxfriendlyurl=url.replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/") 
    page_request.onreadystatechange=function(){
        mouseovertabsmenu.ajaxpopulate(page_request, tabsmenuid, submenuid, disappearBool, ajaxfriendlyurl)
    }
    var bustcache=(ajaxfriendlyurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
    page_request.open('GET', ajaxfriendlyurl+bustcache, true)
    page_request.send(null)
},

ajaxpopulate:function(page_request, tabsmenuid, submenuid, disappearBool, url){
    if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
        var tabsmenutree=this.tabsmenutree[tabsmenuid]
        tabsmenutree.submenu.innerHTML=page_request.responseText
        var innerdivs=tabsmenutree.submenu.getElementsByTagName("div")
        for (var i=0; i<innerdivs.length; i++){
        if (/tabsmenucontent/i.test(innerdivs[i].className)){
                tabsmenutree.submenu_divs.push(innerdivs[i])
            }
        }
        var selected=this.initializetabs(tabsmenuid, submenuid, tabsmenutree.submenu_divs.length, disappearBool)
        if (selected!=null && selected<tabsmenutree.submenu_divs.length){
            innerdivs[selected].style.display="block"
            this.css(tabsmenutree.tabs[selected], "selected", "add")
            tabsmenutree.submenu._prevselected=selected
        }
    }
},

showsubmenu:function(linkobj){
    var tabsmenutree=this.tabsmenutree[linkobj._parentid]
    this.hidesubmenu(linkobj._parentid)
    var selected=parseInt(linkobj._pos)
    tabsmenutree.submenu_divs[selected].style.display="block"
    this.css(tabsmenutree.tabs[selected], "selected", "add")
    tabsmenutree.submenu._prevselected=selected
},

hidesubmenu:function(tabsmenuid){
    var tabsmenutree=this.tabsmenutree[tabsmenuid]
    var prevselectedindex=tabsmenutree.submenu._prevselected
    if (typeof prevselectedindex!="undefined"){
        tabsmenutree.submenu_divs[prevselectedindex].style.display="none"
        this.css(tabsmenutree.tabs[prevselectedindex], "selected", "remove")
    }
},

clearhidetimer:function(timerid){
    if (timerid)
        clearTimeout(timerid)
},

css:function(el, targetclass, action){
    var needle=new RegExp("(^|\\s+)"+targetclass+"($|\\s+)", "ig")
    if (action=="check")
        return needle.test(el.className)
    else if (action=="remove")
        el.className=el.className.replace(needle, "")
    else if (action=="add" && !needle.test(el.className))
        el.className+=" "+targetclass
},

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
},

urlparamselect:function(tabsmenuid){
    var result=window.location.search.match(new RegExp(tabsmenuid+"=(\\w+)", "i")) //check for "?tabsmenuid=id_or_pos_of_selected_tab" in URL
    var selectedtabstr=RegExp.$1
    return /^\d+$/.test(selectedtabstr)? parseInt(selectedtabstr) : selectedtabstr //return position or ID of selected tab (or null if niether found)
},


addEvent:function(target, functionref, tasktype){
    if (target.addEventListener)
        target.addEventListener(tasktype, functionref, false);
    else if (target.attachEvent)
        target.attachEvent('on'+tasktype, function(){return functionref.call(target, window.event)});
},

init:function(tabsmenuid, submenuid, disappearBool){
    this.tabsmenutree[tabsmenuid]={} 
    this.tabsmenutree[tabsmenuid].tabs=[] //array referencing the active tab links in this menu (ones with a "rel=gotsubmenu" attr)
    this.tabsmenutree[tabsmenuid].submenu=null //reference submenu DIV for this menu
    this.tabsmenutree[tabsmenuid].submenu_divs=[] //array referencing the submenu contents (external DIVs with class="tabsmenucontent")
    var submenu=document.getElementById(submenuid)
    submenu._parentid=tabsmenuid
    this.tabsmenutree[tabsmenuid].submenu=submenu //remember this DIV as menu's submenu container
    var remoteurl=submenu.getElementsByTagName("a")[0].getAttribute("href")
    this.ajaxload(tabsmenuid, submenuid, disappearBool, remoteurl)
}

}

document.write('<style type="text/css">\n.tabsmenucontent{display:none}\n</style>')

