// JavaScript Document



//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, 500], //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){

	var menuitems=this[tabid+"-menuitems"]

	this.clearrevert2default(tabid)

 for (i=0; i<menuitems.length; i++){

		menuitems[i].className=""

		if (typeof menuitems[i].hasSubContent!="undefined")

			document.getElementById(menuitems[i].getAttribute("rel")).style.display="none"

	}

	targetitem.className="current"

	if (typeof targetitem.hasSubContent!="undefined")

		document.getElementById(targetitem.getAttribute("rel")).style.display="block"

},



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"])

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

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

		if (dselected=="auto" && typeof setalready=="undefined" && this.isSelected(menuitems[x].href)){

			ddtabmenu.showsubmenu(tabid, menuitems[x])

			this[tabid+"-dselected"]=menuitems[x]

			var setalready=true

		}

		else if (parseInt(dselected)==x){

			ddtabmenu.showsubmenu(tabid, menuitems[x])

			this[tabid+"-dselected"]=menuitems[x]

		}

	}

}

}
