/* Javascript tab manager class.
 * Written By: Ken Colton <kcolton@360hubs.com>
 */
 

function checkNodeClassName(node, className)
{
  var classCheck = new RegExp('\\b' + className + '\\b');
  
  return classCheck.test(node.className);
}

function getElementByClassName(parentNode, className)
{
  var children = parentNode.childNodes;
  
  for(var i = 0; i < children.length; i++)
  {
    if(checkNodeClassName(children[i], className))
    {
      return children[i];
    }
  }
  
  return null;
}

function getChildIndexByClassName(parentNode, className)
{
  var children = parentNode.childNodes;
  
  for(var i = 0; i < children.length; i++)
  {
    if(checkNodeClassName(children[i], className))
    {
      return i;
    }
  }
}

/* Namespacing object for our tab class */
var TabManager360 = new Object();

TabManager360.TabbedPannel = function(setPannelID)
{
  this.pannelID = setPannelID;
  this.pannelNode = document.getElementById(this.pannelID);
  
  this.tabHolderNode = getElementByClassName(this.pannelNode, "TabHolder");
  this.tabListNode = getElementByClassName(this.tabHolderNode, "TabList");
  
  this.tabNodes = this.tabListNode.childNodes;
  
  this.activeIndex = getChildIndexByClassName(this.tabListNode, "active");
  
  this.contentHolderNode = getElementByClassName(this.pannelNode, "TabContent");
  this.contentNodes = this.contentHolderNode.childNodes;
  
  for(var i = 0; i < this.tabNodes.length; i++)
  {
    this.tabNodes[i].managerObject = this;
    this.tabNodes[i].childIndex = i;
    this.tabNodes[i].onclick = this.changeTab;
  }
}

TabManager360.TabbedPannel.prototype = 
{
  changeTab:function()
  {  
    if(this.childIndex != this.managerObject.activeIndex)
    {
      this.managerObject.tabNodes[this.childIndex].className = "active";
      this.managerObject.tabNodes[this.managerObject.activeIndex].className = "";

      this.managerObject.contentNodes[this.childIndex].className = "active";
      this.managerObject.contentNodes[this.managerObject.activeIndex].className = "nonactive";

      this.managerObject.activeIndex = this.childIndex;
    }
  }
}

