/**
 * tabs.js 
 * by Garrett Smith 
 * http://dhtmlkitchen.com/
 */

TABS_DOMAIN="dhtmlkitchen.com";
TABS_CREATOR="DHTMLKITCHEN";
TABS_LICENSEE="dhtmlkitchen";
if(!window.TabParams)
	window.TabParams={
	useClone:false,
	alwaysShowClone:false,
	eventType:"click",
	tabTagName:"*",
	imgOverExt:"",
	imgActiveExt:""
};
TabSystem=function TabSystem(el,tabsDiv){if(arguments.length==0)return;this.souper=TabSystem.souper;this.souper(el);if(typeof tabsDiv.onselectstart!="undefined")
tabsDiv.onselectstart=function(){return false;};this.el.onchange=function(){};this.el.onbeforechange=function(){};this.defaultActiveTab=null;this.activeTab=null;this.relatedTab=null;this.nextTab=null;this.tabsDiv=tabsDiv;this.tabParams=this.getTabParams();this.tabArray=get_elements_with_class_from_classList(this.tabsDiv,this.tabParams.tabTagName,["tab","tabActive"]);this.tabsClone=null;this.tabs=new Array(0);if(!TabSystem.list[this.id])
TabSystem.list[this.id]=this;};TabSystem.list=new Object;TabSystem.extend(EventQueue);TabSystem.prototype.parentSystem=function(){var root=TabSystem.list["body"];if(root=this)return null;var parent=findAncestorWithClass(this.el,"content");if(parent!=null)
return TabSystem.list[parent.id];return root;};TabSystem.prototype.getTabParams=function(){if(!this.tabParams){this.tabParams=new Object;var parentSystem=this.parentSystem();parentTp=(parentSystem==null)?TabParams:parentSystem.getTabParams();for(var param in parentTp)
this.tabParams[param]=parentTp[param];}return this.tabParams;};TabSystem.prototype.setEventType=function(eventType){var params=this.getTabParams();if(params.eventType==eventType)return;for(var i=0,len=this.tabArray.length;i<len;i++){var tab=Tab.list[this.tabArray[i].id];tab.removeEventListener("on"+params.eventType,tab.depressTab);tab.addEventListener("on"+eventType,tab.depressTab);}params.eventType=eventType;};function removeTabs(ts){ts.tabsDiv.style.display="none";if(ts.tabsClone)
ts.tabsClone.style.display="none";var cs=getElementsWithClass(ts.el,"div","content");for(var i=0;i<cs.length;i++){cs[i].style.visibility='visible';cs[i].style.display='block';}}function undoRemoveTabs(ts){ts.tabsDiv.style.display="block";if(ts.tabsClone)
ts.tabsClone.style.display="block";isTabLayout=true;for(var i=0;i<ts.tabs.length;i++)
if(ts.tabs[i]!=ts.activeTab){ts.tabs[i].content.style.display="none";ts.tabs[i].content.style.visibility="hidden";}}TabSystem.prototype.setAlwaysShowClone=function(flag){this.getTabParams().alwaysShowClone=flag;this.showTabsCloneIfNecessary();};TabSystem.prototype.addClone=function(){if(!this.tabsDiv.cloneNode)return;this.getTabParams().useClone=true;this.tabsClone=this.tabsDiv.cloneNode(true);if(!this.tabsClone)return;this.tabsClone.className="tabs tabsClone";this.el.appendChild(this.tabsClone);for(var i=0;i<this.tabArray.length;i++){var cont=Tab.list[this.tabArray[i].id];var bt=getDescendantById(this.tabsClone,cont.id);bt.id="Bottom"+bt.id;cont.bottomTab=new BottomTab(bt,cont);}this.addEventListener("onchange",updateTabsClonePosition);if(Browser.MAC_IE5)
window.setInterval("updateTabsClonePosition()",300);contentPane.addEventListener("onresize",updateTabsClonePosition);this.showTabsCloneIfNecessary();};tabInit=function tabInit(){if(!Browser.isSupported())
return;var tabsDivs=getElementsWithClass(document.body,"div","tabs");if(tabsDivs.length==0){var tabsDiv0=document.getElementById("tabs");if(tabsDiv0)
tabsDivs=[tabsDiv0];else return;}var tabToDepress;for(var i=0;i<tabsDivs.length;i++){var cnt=findAncestorWithClass(tabsDivs[i],"content")||document.body;if(!cnt.id)
cnt.id="body";var ts=new TabSystem(cnt,tabsDivs[i]);var len=ts.tabArray.length;for(var j=0;j<len;new ControllerTab(ts.tabArray[j++],ts));}
var activeTabs=getCookie("activeTabs"+escape(getFilename()))
if(activeTabs!=null){var activeTabArray=activeTabs.split(",");deletePageCookie("activeTabs",getPath());for(var i=0,len=activeTabArray.length;i<len;i++){var tab=Tab.list[activeTabArray[i]];if(tab)
tab.depressTab();}}if(Browser.MAC_IE5){fixDocHeight=function(){document.documentElement.style.height=document.body.style.height=document.body.clientHeight+"px";};contentPane.addEventListener("onresize",fixDocHeight);setTimeout("fixDocHeight()",500);}handleHashNavigation();deletePageCookie("activeTabs"+escape(getFilename()));for(id in TabSystem.list){var ts=TabSystem.list[id];if(ts.tabParams.useClone)
ts.addClone();if(ts.activeTab==null&&ts.defaultActiveTab!=null)
ts.defaultActiveTab.depressTab();}if(Browser.MOZ)
repaintFix(document.body);};window.id="window";contentPane=new EventQueue(window);function handleHashNavigation(){var id=window.location.hash;if(id){var el=document.getElementById(id.substring(1));if(el){var contentEl;if(hasToken(el.className,"content"))
contentEl=el;else contentEl=findAncestorWithClass(el,"content");if(contentEl)
switchTabs("tab"+contentEl.id.substring("content".length),null,false);}}}Tab=function Tab(el,ts){if(arguments.length==0)return;this.souper=Tab.souper;this.souper(el);this.content=null;this.tabSystem=ts;this.properties=new Object;this.el.onActivate=function(){};this.addEventListener("onmouseover",this.hoverTab);this.addEventListener("onmouseout",this.hoverOff);this.addEventListener("on"+this.tabSystem.getTabParams().eventType,this.depressTab);if(Browser.IE5_0)
positionTabEl(this);if(!Tab.list[this.id])
Tab.list[this.id]=this;};Tab.extend(EventQueue);Tab.list=new Object;
Tab.prototype.setProperty=function(name,value){this.properties[name]=value;};Tab.prototype.getContent=function(){if(this.content==null){var id=this.id.substring(3);this.content=document.getElementById("content"+id);if(!this.content){alert("tab.id="+this.id+"\n"+"content"+id+" does not exist!");}}return this.content;};Tab.prototype.getTabSystem=function(){return this.tabSystem;};hoverTab=function hoverTab(){var tab=Tab.list[this.id];var activeTab=tab.tabSystem.activeTab;if(activeTab&&activeTab.id==tab.id)return;tab.setClassName("tabHover tab");if(tab.hoversrc)
tab.el.src=tab.hoversrc;};hoverOff=function hoverOff(){var tab=Tab.list[this.id];var activeTab=tab.tabSystem.activeTab;if(activeTab&&activeTab.id==tab.id)return;tab.setClassName("tab");if(tab.normalsrc)
tab.el.src=tab.normalsrc;};Tab.prototype.toString=function(){return this.id;};function resetTab(tab){tab.setClassName("tab");if(tab.normalsrc)
tab.el.src=tab.normalsrc;tab.getContent().style.display="none";tab.getContent().style.visibility="hidden";}ControllerTab=function ControllerTab(el,ts){if(arguments.length==0)return;this.souper(el,ts);if(el.tagName.toLowerCase()=="img"){this.normalsrc=el.src;this.hoversrc=el.src.replace(extExp,TabParams.imgOverExt+"$1");this.activesrc=el.src.replace(extExp,TabParams.imgActiveExt+"$1");}if(hasToken(el.className,"tabActive")){this.depressTab();this.tabSystem.defaultActiveTab=this;}else{this.getContent().style.display="none";this.getContent().style.visibility="hidden";}this.tabSystem.tabs[this.tabSystem.tabs.length]=this;};ControllerTab.extend(Tab);ControllerTab.prototype.setClassName=function(klass){this.el.className=klass;if(this.bottomTab)
this.bottomTab.el.className=klass;};ControllerTab.prototype.hoverTab=hoverTab;ControllerTab.prototype.hoverOff=hoverOff;ControllerTab.prototype.depressTab=function depressTab(e){var tab=Tab.list[this.id];var tabSystem=tab.tabSystem;tabSystem.nextTab=tab;if(tabSystem.activeTab==tab)return;tabSystem.relatedTab=tabSystem.activeTab;if(false==tabSystem.el.onbeforechange())return;tab.el.onActivate();tab.setClassName("tab tabActive");if(tab.activesrc)
tab.el.src=tab.activesrc;if(tabSystem.activeTab)
resetTab(tabSystem.activeTab);tabSystem.activeTab=tab;tabSystem.el.onchange();if(tabSystem.relatedTab)
tabSystem.relatedTab.getContent().style.display="none";tab.getContent().style.display="block";tab.getContent().style.visibility="inherit";tabSystem.nextTab=null;if(tabSystem.tabsClone)
tabSystem.showTabsCloneIfNecessary();if(Browser.MOZ)
updateTabsClonePosition(1);};BottomTab=function BottomTab(el,controllerTab){if(arguments.length==0)return;this.souper(el,controllerTab.tabSystem);this.controllerTab=controllerTab;};BottomTab.extend(Tab);BottomTab.prototype.hoverTab=function(){this.controllerTab.hoverTab();};BottomTab.prototype.hoverOff=function(){this.controllerTab.hoverOff();};BottomTab.prototype.depressTab=function depressClonedTab(e){var tabSystem=this.tabSystem;if(tabSystem.activeTab==this.controllerTab)return;this.controllerTab.depressTab(e);this.controllerTab.setClassName("tab tabActive");window.scrollTo(0,(tabSystem.tabsClone.offsetTop+this.el.offsetHeight)-getViewportHeight());};function switchTabs(id,e,bReturn){if(!Browser.isSupported())
return true;try{var tab=Tab.list[id];tab.depressTab(e);}catch(ex){}if(!bReturn)
window.scrollTo(0,0);return bReturn;}updateTabsClonePosition=function updateTabsClonePosition(delay){for(var id in TabSystem.list)
if(TabSystem.list[id].tabParams.useClone)
setTimeout("TabSystem.list."+id+".setTabsClonePosition();",delay||500);};TabSystem.prototype.setTabsClonePosition=function(){if(!this.activeTab)return;var adjustment=0;var contentEl=this.activeTab.content;if(Browser.IE5_0||Browser.MAC_IE5)
adjustment=0;else
adjustment=2;this.tabsClone.style.top=(contentEl.offsetHeight+contentEl.offsetTop+adjustment)+px;};TabSystem.prototype.showTabsCloneIfNecessary=function(){if(!this.activeTab)return;var contentEl=this.activeTab.content;var contentBottom=contentEl.offsetTop+contentEl.offsetHeight;var visibility=(contentBottom>getViewportHeight()||this.getTabParams().alwaysShowClone)?"inherit":"hidden";this.tabsClone.style.visibility=visibility;this.setTabsClonePosition();if(Browser.MOZ){window.scrollBy(0,1);window.scrollBy(0,-1);}};function saveTabSystemState(){var activeTabList=getElementsWithClass(document.body,TabParams.tabTagName,"tabActive");for(var i=0;i<activeTabList.length;i++){if(!activeTabList[i].id)continue;activeTabList[i]=activeTabList[i].id;setPageCookie("activeTabs"+escape(getFilename()),activeTabList);}};contentPane.addEventListener("onunload",saveTabSystemState);function positionTabEl(tab){var tabs=tab.el.parentNode;if(tab.tagName=="IMG"||tab.id.indexOf("Bottomtab")==0)
return;if(!tabs.tabOffset)
tabs.tabOffset=0;var tabWidth=Math.round(tab.el.offsetWidth*1.1)+15;var sty=tab.el.style;sty.left=tabs.tabOffset+px;sty.width=tabWidth+px;sty.textAlign="center";sty.display="block";sty.position="absolute";tabs.tabOffset+=parseInt(tab.el.offsetWidth)+4;}