//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: true, //Disable hyperlinks in 1st level tabs with sub contents (true or false)?
	snap2original: [false, 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
		
		if(readCookie('divid'))			
		{
			this.addEvent(window, function(){ddtabmenu.init(tabid, readCookie('divid')-1)}, "load")
		}
		else 
			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"
			
			createCookie('divid', targetitem.getAttribute("rel").substring(2), 1);
		}
		
		
		
	},

	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].onmousedown=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]
			}
			

		}
	}
	

}
	function createCookie (name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*1*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}
	
	function readCookie (name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
	}
	




