//** Tab Content script- © Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
//** Last updated: Nov 8th, 06

var enabletabpersistence=1 //enable tab persistence via session only cookies, so selected tab is remembered?

////NO NEED TO EDIT BELOW////////////////////////
var tabcontentIDs=new Object()

function expandcontent(linkobj){
var ulid=linkobj.parentNode.parentNode.id //id of UL element
var ullist=document.getElementById(ulid).getElementsByTagName("li") //get list of LIs corresponding to the tab contents
for (var i=0; i<ullist.length; i++){
ullist[i].className=""  //deselect all tabs
if (typeof tabcontentIDs[ulid][i]!="undefined") //if tab content within this array index exists (exception: More tabs than there are tab contents)
document.getElementById(tabcontentIDs[ulid][i]).style.display="none" //hide all tab contents
}
linkobj.parentNode.className="selected"  //highlight currently clicked on tab
document.getElementById(linkobj.getAttribute("rel")).style.display="block" //expand corresponding tab content
saveselectedtabcontentid(ulid, linkobj.getAttribute("rel"))
}

function expandtab(tabcontentid, tabnumber){ //interface for selecting a tab (plus expand corresponding content)
var thetab=document.getElementById(tabcontentid).getElementsByTagName("a")[tabnumber]
if (thetab.getAttribute("rel"))
expandcontent(thetab)
}

function savetabcontentids(ulid, relattribute){// save ids of tab content divs
if (typeof tabcontentIDs[ulid]=="undefined") //if this array doesn't exist yet
tabcontentIDs[ulid]=new Array()
tabcontentIDs[ulid][tabcontentIDs[ulid].length]=relattribute
}

function saveselectedtabcontentid(ulid, selectedtabid){ //set id of clicked on tab as selected tab id & enter into cookie
if (enabletabpersistence==1) //if persistence feature turned on
setCookie(ulid, selectedtabid)
}

function getullistlinkbyId(ulid, tabcontentid){ //returns a tab link based on the ID of the associated tab content
var ullist=document.getElementById(ulid).getElementsByTagName("li")
for (var i=0; i<ullist.length; i++){
if (ullist[i].getElementsByTagName("a")[0].getAttribute("rel")==tabcontentid){
return ullist[i].getElementsByTagName("a")[0]
break
}
}
}

function initializetabcontent(){
for (var i=0; i<arguments.length; i++){ //loop through passed UL ids
if (enabletabpersistence==0 && getCookie(arguments[i])!="") //clean up cookie if persist=off
setCookie(arguments[i], "")
var clickedontab=getCookie(arguments[i]) //retrieve ID of last clicked on tab from cookie, if any
var ulobj=document.getElementById(arguments[i])
var ulist=ulobj.getElementsByTagName("li") //array containing the LI elements within UL
for (var x=0; x<ulist.length; x++){ //loop through each LI element
var ulistlink=ulist[x].getElementsByTagName("a")[0]
if (ulistlink.getAttribute("rel")){
savetabcontentids(arguments[i], ulistlink.getAttribute("rel")) //save id of each tab content as loop runs
ulistlink.onclick=function(){
expandcontent(this)
return false
}
if (ulist[x].className=="selected" && clickedontab=="") //if a tab is set to be selected by default
expandcontent(ulistlink) //auto load currenly selected tab content
}
} //end inner for loop
if (clickedontab!=""){ //if a tab has been previously clicked on per the cookie value
var culistlink=getullistlinkbyId(arguments[i], clickedontab)
if (typeof culistlink!="undefined") //if match found between tabcontent id and rel attribute value
expandcontent(culistlink) //auto load currenly selected tab content
else //else if no match found between tabcontent id and rel attribute value (cookie mis-association)
expandcontent(ulist[0].getElementsByTagName("a")[0]) //just auto load first tab instead
}
} //end outer for loop
}


function getCookie(Name){ 
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=")[1] //return its value
return ""
}

function setCookie(name, value){
document.cookie = name+"="+value //cookie value is domain wide (path=/)
}


var slideSpeed = 40;     // Higher value = faster
var timer = 5;     // Lower value = faster
var objectIdToSlideDown = false;
var activeId = false;
var slideInProgress = false;
function showHideContent(e,inputId)
{
     if(slideInProgress)return;
     slideInProgress = true;
     if(!inputId)inputId = this.id;
     inputId = inputId + '';
     var numericId = inputId.replace(/[^0-9]/g,'');
     var answerDiv = document.getElementById('a' + numericId);
     objectIdToSlideDown = false;
     if(!answerDiv.style.display || answerDiv.style.display=='none'){          
          if(activeId &&  activeId!=numericId){               
               objectIdToSlideDown = numericId;
               slideContent(activeId,(slideSpeed*-1));
          }else{          
               answerDiv.style.display='block';
               answerDiv.style.visibility = 'visible';
               slideContent(numericId,slideSpeed);
          }
     }else{
          slideContent(numericId,(slideSpeed*-1));
          activeId = false;
     }     
}

function slideContent(inputId,direction)
{
     var obj =document.getElementById('a' + inputId);
     var contentObj = document.getElementById('ac' + inputId);
     height = obj.clientHeight;
     if(height==0)height = obj.offsetHeight;
     height = height + direction;
     rerunFunction = true;
     if(height>contentObj.offsetHeight){
          height = contentObj.offsetHeight;
          rerunFunction = false;
     }
     if(height<=1){
          height = 1;
          rerunFunction = false;
     }

     obj.style.height = height + 'px';
     var topPos = height - contentObj.offsetHeight;
     if(topPos>0)topPos=0;
     contentObj.style.top = topPos + 'px';
     if(rerunFunction){
          setTimeout('slideContent(' + inputId + ',' + direction + ')',timer);
     }else{
          if(height<=1){
               obj.style.display='none'; 
               if(objectIdToSlideDown && objectIdToSlideDown!=inputId){
                    document.getElementById('a' + objectIdToSlideDown).style.display='block';
                    document.getElementById('a' + objectIdToSlideDown).style.visibility='visible';
                    slideContent(objectIdToSlideDown,slideSpeed);                    
               }else{
                    slideInProgress = false;
               }
          }else{
               activeId = inputId;
               slideInProgress = false;
          }
     }
}



function initShowHideDivs()
{
     var divs = document.getElementsByTagName('DIV');
     var divCounter = 1;
     for(var no=0;no<divs.length;no++){
          if(divs[no].className=='CSHeader'){
               divs[no].onclick = showHideContent;
               divs[no].id = 'q'+divCounter;
               var answer = divs[no].nextSibling;
               while(answer && answer.tagName!='DIV'){
                    answer = answer.nextSibling;
               }
               answer.id = 'a'+divCounter;     
               contentDiv = answer.getElementsByTagName('DIV')[0];
               contentDiv.style.top = 0 - contentDiv.offsetHeight + 'px';      
               contentDiv.className='CSContent_content';
               contentDiv.id = 'ac' + divCounter;
               answer.style.display='none';
               answer.style.height='1px';
               divCounter++;
          }          
     }     
}
window.onload = initShowHideDivs;
