
function debug(sMessage)
{
  //~ console.log(sMessage);
  //~ alert(sMessage);
}

function ContentTabs(iTabCount)
{
  debug("Creating Tabs");
  this.iTabCount = iTabCount;
  this.oTabListContainer = document.getElementById('indexTabList');
  this.bLinkText = true; // Show link text for tabs
  
  this.maoTabs = Array();
  for (var iTabIndex = 0; iTabIndex < this.iTabCount; iTabIndex ++)
  {
    this.maoTabs[iTabIndex] = new Tab(iTabIndex, this.bLinkText);
  }
}

ContentTabs.prototype.loadTabContent = function()
{
  var oXMLRequest = new window.XMLHttpRequest();
  oXMLRequest.onreadystatechange = function() {  
                                                if(oXMLRequest.readyState == 4) 
                                                {
                                                  ContentTabs.processTabContent(oXMLRequest.responseXML);
                                                }
                                              };
  oXMLRequest.open("GET",'in-base/js/tabDefinitions.xml',true);
  oXMLRequest.send(null);
}

ContentTabs.prototype.processTabContent = function(oXmlData)
{
  var oDefinitions = null;
  if (oDefinitions = oXmlData.getElementsByTagName('tabdefinitions'))
  {
    if (oDefinitions[0])
    {
      debug("Tab definitions has '"+oDefinitions[0].childNodes.length+"' child nodes");
      var oTabContent = null;
      if (oTabContent = oDefinitions[0].getElementsByTagName('tab'))
      {
        debug("found '"+oTabContent.length+"' tab elements");
        for (var iTabElement = 0; iTabElement < oTabContent.length; iTabElement ++)
        {
          if (oTabContent[iTabElement].getAttribute('tabId'))
          {
            var iContentForTabId = oTabContent[iTabElement].getAttribute('tabId');
            if (this.maoTabs[iContentForTabId])
            {
              var oTitle = null;
              if (oTitle = oTabContent[iTabElement].getElementsByTagName('title')[0])
              {
                this.maoTabs[iContentForTabId].setTitle(oTitle);
              }
              else
              {
                this.maoTabs[iContentForTabId].setTitle("Failed to load.");
              }
              
              var oContent = null;
              if (oContent = oTabContent[iTabElement].getElementsByTagName('content')[0])
              {
                this.maoTabs[iContentForTabId].setContent(oContent);
              }
              else
              {
                this.maoTabs[iContentForTabId].setContent("Failed to load.");
              }
              
              var oLink = null;
              if (oLink = oTabContent[iTabElement].getElementsByTagName('link')[0])
              {
                this.maoTabs[iContentForTabId].setLink(oLink);
              }
              else
              {
                this.maoTabs[iContentForTabId].setLink("Failed to load.");
              }
            }
          }
        }
      }
    }
  }
  else
  {
    debug("XmlDefinitions does not contain the 'tabdefinitions' tag, unable to process");
  }
}

ContentTabs.prototype.display = function()
{
  for (var iTabIndex = 0; iTabIndex < this.iTabCount; iTabIndex ++)
  {
    this.maoTabs[iTabIndex].display(iTabIndex, this.oTabListContainer);
  }
}

ContentTabs.prototype.showTab = function(iIndex)
{
  for (var iTabIndex = 0; iTabIndex < this.iTabCount; iTabIndex ++)
  {
    if (iTabIndex == iIndex)
    { 
      this.maoTabs[iTabIndex].show();
    }
    else
    {
      this.maoTabs[iTabIndex].hide();
    }
  }
}
