function TabController()
{
  this.registeredtabid    = Array();
  this.registeredtabname  = Array();
  this.registeredhelp     = Array();
  this.pageid             = '';
}

TabController.prototype.registerHelp = function(helpid)
{
  this.registeredhelp.push(helpid);
}

TabController.prototype.setHelp = function(helpid)
{
  for(i=0;i<this.registeredhelp.length;i++)
  {
    if(helpid != this.registeredhelp[i])
    {
      Element.hide(this.registeredhelp[i]);
    }else
    {
      Element.show(helpid);
    }
  }
}

TabController.prototype.registerTab = function(id,name)
{
  this.registeredtabid.push(id);
  this.registeredtabname.push(name);
}

TabController.prototype.setTab = function(tabname,tabnumber)
{
  this.saveTab(tabname,tabnumber);
  var lasttab   = 0;
  var lefttab   = 0;
  var righttab  = 0;
  for(var i = 0; i < this.registeredtabid.length; i++)
  {
    if(parseInt(tabnumber) == this.registeredtabid[i])
    {
      lefttab = lasttab;
      if(i+1 < this.registeredtabid.length)
      {
        righttab = this.registeredtabid[i+1];
      }
    }
  }
  for(var i = 0; i < this.registeredtabid.length; i++)
  {
    $('tab_'+this.registeredtabid[i]).removeClassName('tm_act');
    $('tab_'+this.registeredtabid[i]).removeClassName('tm_left');
    $('tab_'+this.registeredtabid[i]).removeClassName('tm_right');
  }
  $('tab_'+tabnumber).addClassName('tm_act');
  if(0 != lefttab)
  {
    $('tab_'+lefttab).addClassName('tm_left');
  }
  if(0 != righttab)
  {
    $('tab_'+righttab).addClassName('tm_right');
  }
  for(i=0;i<this.registeredtabname.length;i++)
  {
    if(tabname != this.registeredtabname[i])
    {
      Element.hide(this.registeredtabname[i]);
    }
  }
  Element.show(tabname);
}

TabController.prototype.saveTab = function(tabname,tabnumber)
{
  if(this.pageid.length > 0)
  {
    document.cookie = 'tab'+this.pageid+'='+tabname+':'+tabnumber;
  }
}

TabController.prototype.isHelpNameRegistered = function(name)
{
  for(i=0;i<this.registeredhelp.length;i++)
  {
    if(this.registeredhelp[i] == name)
    {
      return true;
    }
  }
  return false;
}

TabController.prototype.isTabIdRegistered = function(id)
{
  for(i=0;i<this.registeredtabid.length;i++)
  {
    if(this.registeredtabid[i] == id)
    {
      return true;
    }
  }
  return false;
}

TabController.prototype.isTabNameRegistered = function(name)
{
  for(i=0;i<this.registeredtabname.length;i++)
  {
    if(this.registeredtabname[i] == name)
    {
      return true;
    }
  }
  return false;
}

TabController.prototype.restoreTabFromCookie = function()
{
  var restored          = false;
  var tempcookiestring  = document.cookie;
  var cookiearray       = tempcookiestring.split(';');

  for(ic=0;ic<cookiearray.length;ic++)
  {
    cookie = cookiearray[ic].split('=');
    if('tab'+this.pageid == cookie[0].replace(/\s+/g,""))
    {
      temp = cookie[1].replace(/\s+/g,"").split(':');
      if(this.isTabIdRegistered(temp[1]) && this.isTabNameRegistered(temp[0]))
      {
        this.setTab(temp[0],parseInt(temp[1]));
        restored = true;
      }
    }
  }
  if(!restored)
  { /*take the first registered tab*/
    this.setTab(this.registeredtabname[0],this.registeredtabid[0]);
  }
}

TabController.prototype.setPageId = function(pageid)
{
  this.pageid = pageid;
}
var TC = new TabController;

/*Tabcontroller helper functions*/
function setBig(id)
{
  $(id).className = 'big_text';
  $(id+'_big').hide();
  $(id+'_small').show();
  return false;
}
function setSmall(id)
{
  $(id).className = 'normal_text';
  $(id+'_big').show();
  $(id+'_small').hide();
  return false;
}
