// Global tracing function
function trace( msg ) {
  if( typeof( jsTrace ) != 'undefined' ) {
    jsTrace.send( msg );
  }
}


// Constant declarations
var minContentHeight=250
var contentSizeUnit="px"
var leftColumnId="leftsidebar"
var centerColumnId="main"
var rightColumnId="rightsidebar"
// var divHome="div_home"
// var divContact="div_contact"
// var divPricing="div_pricing"


//** 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()
var menus=new Array()


function resizeColumns() {
   trace('resizeColumns()')

   var centerColumn=document.getElementById(centerColumnId)
   if (centerColumn == null)
      trace('Could not retrieve ' + centerColumnId + ' div.')

   var leftColumn=document.getElementById(leftColumnId)
   if (leftColumn == null)
      trace('Could not retrieve ' + leftColumnId + ' div.')

   var rightColumn=document.getElementById(rightColumnId)
   if (rightColumn == null)
      trace('Could not retrieve ' + rightColumnId + ' div.')

   trace(centerColumnId + ' div offsetHeight: ' + centerColumn.offsetHeight.toString())

   var newHeight=Math.max(centerColumn.offsetHeight, minContentHeight)
//   var newHeight=centerColumn.offsetHeight
   trace('New height: ' + newHeight.toString())

   leftColumn.style.height = newHeight + contentSizeUnit
   rightColumn.style.height = newHeight + contentSizeUnit
}


function expandcontent(linkobj, ulid) {
   trace('expandcontent(' + linkobj.getAttribute("rel") + ', ' + ulid + ')')
   var tabid=linkobj.getAttribute("rel")
   trace('a rel value: ' + tabid)

   for (var j=0; j<menus.length; j++) {
      var menu=document.getElementById(menus[j])
      if (menu == null)
         trace('Could not retrieve menu by getElementById()')
      var ullist=menu.getElementsByTagName("li") //get list of LIs corresponding to the tab contents
      trace('li list length:' + ullist.length.toString())
      for (var i=0; i<ullist.length; i++){
         ullist[i].className=""  //deselect all tabs
         var thetab=document.getElementById(tabcontentIDs[menus[j]][i])
         if (thetab != null) {//if tab content within this array index exists (exception: More tabs than there are tab contents)
               trace('div ' + tabcontentIDs[ulid][i] + ' defined - setting visibility to hidden')
               thetab.style.visibility="hidden" //hide all tab contents
               thetab.style.display="none"
         }
      }
   }

   if (enabletabpersistence == 1) {
      linkobj.parentNode.className="selected"  //highlight currently clicked on tab
   }

   var thetab=document.getElementById(tabid)
   if (thetab != null) {
      trace('div defined - setting visibility to visible')
      thetab.style.display="block" //expand corresponding tab content
      thetab.style.visibility="visible" //expand corresponding tab content

// ***** Page specific code *****
//      if (tabid == divHome) {
//         var pricingtab=document.getElementById(divPricing)
//         if (pricingtab != null) {
//            trace('Setting div_pricing visibility to visible')
//            pricingtab.style.display="block" //expand corresponding tab content
//            pricingtab.style.visibility="visible" //expand corresponding tab content
//         }
//
//         var contacttab=document.getElementById(divContact)
//         if (contacttab != null) {
//            trace('Setting div_contact visibility to visible')
//            contacttab.style.display="block" //expand corresponding tab content
//            contacttab.style.visibility="visible" //expand corresponding tab content
//         }
//      }
// ***** Page specific code *****

      resizeColumns()
   }
   saveselectedtabcontentid(ulid, tabid)

   window.scrollTo(0,0)
}

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, tabcontentid)
}

function savetabcontentids(ulid, relattribute) {// save ids of tab content divs
   if (tabcontentIDs[ulid] == null) //if this array doesn't exist yet
      tabcontentIDs[ulid]=new Array()

   var index=tabcontentIDs[ulid].length
   tabcontentIDs[ulid][index]=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 processlistitem(sublist, ulid) {
   trace('processlistitem(' + sublist.id + ', ' + ulid + ')')
   var ulistlink=sublist.getElementsByTagName("a")[0]
   var relattribute=ulistlink.getAttribute("rel")
   if ((relattribute != null) && (relattribute != "")) {
      trace('rel attribute: ' + relattribute)
      savetabcontentids(ulid, relattribute) //save id of each tab content as loop runs
      ulistlink.onclick= function() {
         expandcontent(this, ulid)
         return false
      }
   }
}

function initializetabcontent() {
   trace('initializetabcontent()')
   var clickedOnTabSelected = -1;
   var selected = -1
   var clickedontab = ""
   var clickedonmenu = ""
   var firstmenu = ""
   var a_element_selected
   var selected_menu = ""
   for (var i=0; i<arguments.length; i++){ //loop through passed UL ids
      var tablist=arguments[i]
      if (firstmenu == "")
         firstmenu = tablist

      menus[i]=tablist
      trace('Menu added: ' + menus[i])
      trace('Nbr menus: ' + menus.length.toString())

      if (enabletabpersistence==0 && getCookie(tablist)!="") //clean up cookie if persist=off
         setCookie(tablist, "")
 
      if (clickedontab == "") {
         clickedontab=getCookie(tablist) //retrieve ID of last clicked on tab from cookie, if any
         if (clickedontab != "")
            clickedonmenu = tablist
      }

      var ulobj=document.getElementById(tablist)
      var ulist=ulobj.getElementsByTagName("li") //array containing the LI elements within UL
      trace('List length: ' + ulist.length.toString())
      for (var x=0; x<ulist.length; x++) { //loop through each LI element
         processlistitem(ulist[x], tablist)
         if (ulist[x].className == "selected")
         {
            selected = x
            a_element_selected = ulist[selected].getElementsByTagName("a")[0]
            selected_menu = tablist
         }
      } //end inner for loop
   } //end outer for loop

   if ((selected != -1) && clickedontab=="") {//if a tab is set to be selected by default
      trace('Item selected - expanding content')
      expandcontent(a_element_selected, selected_menu) //auto load currenly selected tab content
   }
   if ((clickedontab!="") && (clickedOnTabSelected == -1)) { //if a tab has been previously clicked on per the cookie value
      trace('Tab previously clicked on: ' + clickedontab)
      clickedOnTabSelected = 1
      var culistlink=getullistlinkbyId(clickedonmenu, clickedontab)
      if (culistlink!=null) { //if match found between tabcontent id and rel attribute value
         trace('Found match')
         expandcontent(culistlink, clickedonmenu) //auto load currenly selected tab content
      }
      else { //else if no match found between tabcontent id and rel attribute value (cookie mis-association)
         trace('Cookie mismatch - load first tab on first menu: ' + firstmenu)
         expandcontent(ulist[0].getElementsByTagName("a")[0], firstmenu) //just auto load first tab instead
      }
   }
}


function getCookie(Name) { 
   trace('getCookie(' + Name + ')')
   var re=new RegExp(document.URL+"_tab="+Name+"-[^;]+", "i"); //construct RE to search for target name/value pair
   if (document.cookie.match(re)) { //if cookie found
      var value = document.cookie.match(re)[0].split("-")[1] //return its value
      trace('getCookie: ' + Name + ' - ' + value)
      return value
   }
   return ""
}

function setCookie(name, value) {
   document.cookie = document.URL+"_tab="+name+"-"+value //cookie value is domain wide (path=/)
   trace('setCookie: ' + document.cookie)
}

