addEvent(window, 'load', Tabinit);

//ROLLOVER IMAGES
var img_folder='images/1/';
var img_ext='_on.jpg';
// GLOBAL ARRAYS FOR STORING TOGGLE ELEMENTS AND IMAGES
var tabPanels = [];
var tabImages= [];
var tabImagesOn = [];
var ImagesOnFlags=[];
//CLASS USED TO IDENTIFY DIVs
var TabGroupClass='tabgroup';

function Tabinit()
  {
  InitializeTabs(4);
  }



function InitializeTabs(groups)
  {
  var i, link, id, target, first, maxheight;

//FOR EACH TAB GROUP
  for(x=1; x<=groups; x++)
    {
    first = true;
    maxheight=GetElementHeight('rollover'+x+'_1');
    seq=1;
    //CLASS IDENTIFYING IMAGE AND LINK
    pattern=new RegExp('^'+TabGroupClass+x+'$');
    //PRELOAD IMAGES
    for (i = 0; i<document.images.length; i++)
      {
      image = document.images[i];
      if (pattern.test(image.className))
        {
        tabImages[x+'_'+seq] = document.getElementById(image.id);
        tabImagesOn[x+'_'+seq]=new Image();
        tabImagesOn[x+'_'+seq].src=img_folder+image.id+img_ext;
        seq++;
        }
      }
    ImagesOnFlags[x]=true;

    //INITIALIZE LINKS
    seq=1;
    for (i = 0; (link = document.links[i]); i++)
      {
      if (pattern.test(link.className))
        {
        id = link.href.split('#')[1];
        target = document.getElementById(id);
        if(GetElementHeight(id)>maxheight) {maxheight=GetElementHeight(id);}
        tabPanels[x+'_'+seq]=target;
        if (first)
	  {
          RollOver(x,1);
          first = false;
          }
	else
	  {
          target.style.display = 'none';
          }
        seq++;
        link.onmouseover = et_toggle;
        }
      }
    //AJUST PANEL HEIGHT TO MAX
    for (var i = 1; (elem = index2(tabPanels,x,i)); i++)
      {
      elem.style.height=maxheight+'px';
      }
    if(x==4 && maxheight>150) //Software Tab
      {
      document.getElementById('softwaretab').style.height=maxheight+'px';
      }
    }
  }



function et_toggle(e) {
   if (typeof e == 'undefined') {
        var e = window.event;
    }
    var source;
    if (typeof e.target != 'undefined') {
        source = e.target;
    } else if (typeof e.srcElement != 'undefined') {
        source = e.srcElement;
    } else {
        return true;
    }

   source = source.parentNode;
    /* For most browsers, targ would now be a link element; Safari however
       returns a text node so we need to check the node type to make sure */
    if (source.nodeType == 3) {
        source = source.parentNode;
    }

  var id = source.href.split('#')[1];
//ID MUST HAVE THIS FORMAT: rolloverN_N, OTHERWISE WON'T WORK!!!!
  var x=new String(id);
  x=x.substring(x.length-3,x.length-2);
  x=parseInt(x);
  var elem;
  for (var i = 1; (elem = tabPanels[x+'_'+i]); i++)
    {
    if (elem.id != id)
      {
      RollOut(x,i);
      elem.style.display = 'none';
      }
    else
      {
      RollOver(x,i);
      elem.style.display = 'block';
      }
    }
  return false;
  }




function RollOver(x,i)
  {
  if (ImagesOnFlags[x]==false) return;
  tabImages[x+'_'+i].src = tabImagesOn[x+'_'+i].src;
  }

function RollOut(x,i)
  {
  if (ImagesOnFlags[x]==false) return;
//  tabImages[x+'_'+i].src=img_folder+'i'+tabPanels[x+'_'+i].id+'_off.jpg';
  tabImages[x+'_'+i].src=img_folder+tabImages[x+'_'+i].id+'_off.jpg';
  }


function addEvent(obj, evType, fn)
  {
  if (obj.addEventListener)
    {
    obj.addEventListener(evType, fn, false);
    return true;
    }
  else if (obj.attachEvent)
    {
    var r = obj.attachEvent("on"+evType, fn);
    return r;
    }
  else
    {
    return false;
    }
  }


function GetElementHeight(id)
  {
  if(document.getElementById(id).style.height!='')
    {
    height=document.getElementById(id).style.height;
    heightArray=height.split('p');
    return parseInt(heightArray[0]);
    }
  else
    {return document.getElementById(id).offsetHeight;}
  }


function index2(arr,x,y)
  {
  return arr[x+'_'+y];
  }
