domtab={
tabClass:'domtab',
listClass:'domtabs',
activeClass:'active',
contentElements:'div',
backToLinks:/#top/,
printID:'domtabprintview',
showAllLinkText:'show all content',
prevNextIndicator:'doprevnext',
prevNextClass:'prevnext',
prevLabel:'previous',
nextLabel:'next',
prevClass:'prev',
nextClass:'next',
init:function(){
var temp
if(!document.getElementById || !document.createTextNode){return;}
var tempelm=document.getElementsByTagName('div')
for(var i=0;i<tempelm.length;i++){
if(!domtab.cssjs('check',tempelm[i],domtab.tabClass)){continue;}
domtab.initTabMenu(tempelm[i])
domtab.removeBackLinks(tempelm[i])
if(domtab.cssjs('check',tempelm[i],domtab.prevNextIndicator)){
domtab.addPrevNext(tempelm[i])}
domtab.checkURL()}
if(document.getElementById(domtab.printID)
&&!document.getElementById(domtab.printID).getElementsByTagName('a')[0]){
var newlink=document.createElement('a')
newlink.setAttribute('href','#')
domtab.addEvent(newlink,'click',domtab.showAll,false)
newlink.onclick=function(){return false;}
newlink.appendChild(document.createTextNode(domtab.showAllLinkText))
document.getElementById(domtab.printID).appendChild(newlink)}
},
checkURL:function(){
var id
var loc=window.location.toString()
loc=/#/.test(loc)?loc.match(/#(\w.+)/)[1]:''
if(loc==''){return;}
var elm=document.getElementById(loc)
if(!elm){return;}
var parentMenu=elm.parentNode.parentNode.parentNode
parentMenu.currentSection=loc
parentMenu.getElementsByTagName(domtab.contentElements)[0].style.display='none'
domtab.cssjs('remove',parentMenu.getElementsByTagName('a')[0].parentNode,domtab.activeClass)
var links=parentMenu.getElementsByTagName('a')
for(i=0;i<links.length;i++){
if(!links[i].getAttribute('href')){continue;}
if(!/#/.test(links[i].getAttribute('href').toString())){continue;}
id=links[i].href.match(/#(\w.+)/)[1]
if(id==loc){
var cur=links[i].parentNode.parentNode
domtab.cssjs('add',links[i].parentNode,domtab.activeClass)
break}}
domtab.changeTab(elm,1)
elm.focus()
cur.currentLink=links[i]
cur.currentSection=loc
},
showAll:function(e){
document.getElementById(domtab.printID).parentNode.removeChild(document.getElementById(domtab.printID))
var tempelm=document.getElementsByTagName('div')
for(var i=0;i<tempelm.length;i++){
if(!domtab.cssjs('check',tempelm[i],domtab.tabClass)){continue;}
var sec=tempelm[i].getElementsByTagName(domtab.contentElements)
for(var j=0;j<sec.length;j++){
sec[j].style.display='block'}}
var tempelm=document.getElementsByTagName('ul')
for(i=0;i<tempelm.length;i++){
if(!domtab.cssjs('check',tempelm[i],domtab.prevNextClass)){continue;}
tempelm[i].parentNode.removeChild(tempelm[i])
i--}
domtab.cancelClick(e)
},
addPrevNext:function(menu){
var temp
var sections=menu.getElementsByTagName(domtab.contentElements)
for(var i=0;i<sections.length;i++){
temp=domtab.createPrevNext()
if(i==0){
temp.removeChild(temp.getElementsByTagName('li')[0])}
if(i==sections.length-1){
temp.removeChild(temp.getElementsByTagName('li')[1])}
temp.i=i
temp.menu=menu
sections[i].appendChild(temp)}
},
removeBackLinks:function(menu){
var links=menu.getElementsByTagName('a')
for(var i=0;i<links.length;i++){
if(!domtab.backToLinks.test(links[i].href)){continue;}
links[i].parentNode.removeChild(links[i])
i--}
},
initTabMenu:function(menu){
var id
var lists=menu.getElementsByTagName('ul')
for(var i=0;i<lists.length;i++){
if(domtab.cssjs('check',lists[i],domtab.listClass)){
var thismenu=lists[i]
break}}
if(!thismenu){return;}
thismenu.currentSection=''
thismenu.currentLink=''
var links=thismenu.getElementsByTagName('a')
for(i=0;i<links.length;i++){
if(!/#/.test(links[i].getAttribute('href').toString())){continue;}
id=links[i].href.match(/#(\w.+)/)[1]
if(document.getElementById(id)){
domtab.addEvent(links[i],'click',domtab.showTab,false)
links[i].onclick=function(){return false;}
domtab.changeTab(document.getElementById(id),0)}}
id=links[0].href.match(/#(\w.+)/)[1]
if(document.getElementById(id)){
domtab.changeTab(document.getElementById(id),1)
thismenu.currentSection=id
thismenu.currentLink=links[0]
domtab.cssjs('add',links[0].parentNode,domtab.activeClass)}
},
createPrevNext:function(){
var temp=document.createElement('ul')
temp.className=domtab.prevNextClass
temp.appendChild(document.createElement('li'))
temp.getElementsByTagName('li')[0].appendChild(document.createElement('a'))
temp.getElementsByTagName('a')[0].setAttribute('href','#')
temp.getElementsByTagName('a')[0].innerHTML=domtab.prevLabel
temp.getElementsByTagName('li')[0].className=domtab.prevClass
temp.appendChild(document.createElement('li'))
temp.getElementsByTagName('li')[1].appendChild(document.createElement('a'))
temp.getElementsByTagName('a')[1].setAttribute('href','#')
temp.getElementsByTagName('a')[1].innerHTML=domtab.nextLabel
temp.getElementsByTagName('li')[1].className=domtab.nextClass
domtab.addEvent(temp.getElementsByTagName('a')[0],'click',domtab.navTabs,false)
domtab.addEvent(temp.getElementsByTagName('a')[1],'click',domtab.navTabs,false)
temp.getElementsByTagName('a')[0].onclick=function(){return false;}
temp.getElementsByTagName('a')[1].onclick=function(){return false;}
return temp
},
navTabs:function(e){
var li=domtab.getTarget(e)
var menu=li.parentNode.parentNode.menu
var count=li.parentNode.parentNode.i
var section=menu.getElementsByTagName(domtab.contentElements)
var links=menu.getElementsByTagName('a')
var othercount=(li.parentNode.className==domtab.prevClass)?count-1:count+1
section[count].style.display='none'
domtab.cssjs('remove',links[count].parentNode,domtab.activeClass)
section[othercount].style.display='block'
domtab.cssjs('add',links[othercount].parentNode,domtab.activeClass)
var parent=links[count].parentNode.parentNode
parent.currentLink=links[othercount]
parent.currentSection=links[othercount].href.match(/#(\w.+)/)[1]
domtab.cancelClick(e)
},
changeTab:function(elm,state){
do{
elm=elm.parentNode
}while(elm.nodeName.toLowerCase()!=domtab.contentElements)
elm.style.display=state==0?'none':'block'
},
showTab:function(e){
var o=domtab.getTarget(e)
if(o.parentNode.parentNode.currentSection!=''){
domtab.changeTab(document.getElementById(o.parentNode.parentNode.currentSection),0)
domtab.cssjs('remove',o.parentNode.parentNode.currentLink.parentNode,domtab.activeClass)}
var id=o.href.match(/#(\w.+)/)[1]
o.parentNode.parentNode.currentSection=id
o.parentNode.parentNode.currentLink=o
domtab.cssjs('add',o.parentNode,domtab.activeClass)
domtab.changeTab(document.getElementById(id),1)
document.getElementById(id).focus()
domtab.cancelClick(e)
},
getTarget:function(e){
var target=window.event ? window.event.srcElement : e ? e.target : null
if(!target){return false;}
if(target.nodeName.toLowerCase()!='a'){target=target.parentNode;}
return target
},
cancelClick:function(e){
if(window.event){
window.event.cancelBubble=true
window.event.returnValue=false
return}
if(e){
e.stopPropagation()
e.preventDefault()}
},
addEvent: function(elm,evType,fn,useCapture){
if(elm.addEventListener){
elm.addEventListener(evType,fn,useCapture)
return true
}else if(elm.attachEvent){
var r=elm.attachEvent('on'+evType,fn)
return r
}else{
elm['on'+evType]=fn}
},
cssjs:function(a,o,c1,c2){
switch(a){
case 'swap':
o.className=!domtab.cssjs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2)
break
case 'add':
if(!domtab.cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}
break
case 'remove':
var rep=o.className.match(' '+c1)?' '+c1:c1
o.className=o.className.replace(rep,'')
break
case 'check':
var found=false
var temparray=o.className.split(' ')
for(var i=0;i<temparray.length;i++){
if(temparray[i]==c1){found=true;}}
return found
break}}}
domtab.addEvent(window,'load',domtab.init,false)
