//Mouseover Tabs Menu: By http://www.dynamicdrive.com

//** Aug 4th, 08': Script creation date

/***********************************************

* Mouseover Tabs Menu- (c) Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for this script and 100s more
***********************************************/

var mouseovertabsmenu={



disappeardelay: 250, //set delay in miliseconds before sub menu disappears onmouseout

ajaxloadingmsg: 'Loading Sub Menu Contents...', //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>')

