// x_tpg.js, part of X, a Cross-Browser.com Javascript Library
// Copyright (C) 2001,2002,2003,2004,2005 Michael Foster - Distributed under the terms of the GNU LGPL - OSI Certified
// File Rev: 5

/* xTabPanelGroup(id, w, h, th, clsTP, clsTG, clsTD, clsTS)
     id - id string of tabPanelGroup element.
     w - overall width.
     h - overall height.
     th - tab height.
     clsTP - tabPanel css class
     clsTG - tabGroup css class
     clsTD - tabDefault css class
     clsTS - tabSelected css class

   Assumes tabPanelGroup element (overall container) has a 1px border.
*/

function xTabPanelGroup(id, w, h, th, clsTP, clsTG, clsTD, clsTS,initialTab) // object prototype
{
  var panelGrp = xGetElementById(id);
  if (!panelGrp) { return null; }
  var panels = xGetElementsByClassName(clsTP, panelGrp);
  var tabs = xGetElementsByClassName(clsTD, panelGrp);
  var tabGrp = xGetElementsByClassName(clsTG, panelGrp);
  
  
/*   debuging
  
  if (!panels ) { alert('1 null'); }
    if (!tabs ) { alert('2 null'); }
      if (!tabGrp ) { alert('3 null'); }
        if (panels.length != tabs.length) { alert('4 null'); }
          if (tabGrp.length != 1) { alert('5 null'); }
            
    
    
   */
  
  if (!panels || !tabs || !tabGrp || panels.length != tabs.length || tabGrp.length != 1) { alert('returning null'); return null; }

  var selectedIndex = 0, highZ, x = 0, i;
  
  xResizeTo(panelGrp, w, h);
  xResizeTo(tabGrp[0], w, th);
  xMoveTo(tabGrp[0], 0, 0);
  
  w -= 2; // remove border widths
  var tw = w / tabs.length;

  for (i = 0; i < tabs.length; ++i) {
    xResizeTo(tabs[i], tw, th); 
    xMoveTo(tabs[i], x, 0);
    x += tw;
    tabs[i].xTabIndex = i;
    tabs[i].onclick = tabOnClick;
    xDisplay(panels[i], 'none'); //r6//
    xResizeTo(panels[i], w, h - th - 2); // -2 removes border widths
    xMoveTo(panels[i], 0, th);
  }
   
    
  highZ = i;
  tabs[initialTab-1].onclick();
  
  function tabOnClick()
  {
    xDisplay(panels[selectedIndex], 'none'); //r6//
    tabs[selectedIndex].className = clsTD;
    this.className = clsTS;
    xZIndex(this, highZ++);
    xDisplay(panels[this.xTabIndex], 'block'); //r6//
    selectedIndex = this.xTabIndex;
  }

  this.onUnload = function()
  {
    if (xIE4Up) for (var i = 0; i < tabs.length; ++i) {tabs[i].onclick = null;}
  }
}






function xTabPanelResize(id, w, h, th, clsTP, clsTG, clsTD, clsTS)
{
  var panelGrp = xGetElementById(id);
  if (!panelGrp) { return null; }
  var panels = xGetElementsByClassName(clsTP, panelGrp);
  var tabs = xGetElementsByClassName(clsTD, panelGrp);
  var tabGrp = xGetElementsByClassName(clsTG, panelGrp);
//  if (!panels || !tabs || !tabGrp || panels.length != tabs.length || tabGrp.length != 1) { alert('null');return null; }

  var pgw = xClientWidth() - 26;
  var pgh = xClientHeight() - 95;
  xResizeTo(panelGrp, pgw, pgh);
  for (i = 0; i < tabs.length; ++i) {
    xHeight(panels[i],pgh - th - 2);
    xMoveTo(panels[i], 0, th);
  }
}


/* PW: new test version for editors...  */

function xTabPanelGroupEditor(id, w, h, th, clsTP, clsTG, clsTD, clsTS,initialTab) // object prototype
{
  var panelGrp = xGetElementById(id);
  if (!panelGrp) { return null; }
  var panels = xGetElementsByClassName(clsTP, panelGrp);
  var tabs = xGetElementsByClassName(clsTD, panelGrp);
  var tabGrp = xGetElementsByClassName(clsTG, panelGrp);
  if (!panels || !tabs || !tabGrp || panels.length != tabs.length || tabGrp.length != 1) {return null; }

  var selectedIndex = 0, highZ, x = 8, i;
  
  var pgw = xWidth(panelGrp);
  var pgh = xClientHeight() - 95;
  if (pgh < 200) {pgh = h;} 
  
  xHeight(panelGrp,pgh);
  xResizeTo(panelGrp, pgw, pgh);

 // xResizeTo(tabGrp[0], w, th);
  xHeight(tabGrp[0],th);
  xMoveTo(tabGrp[0], 0, 0);
  
  w -= 2; // remove border widths
  //var tw = w / tabs.length;
  var tw = 100;  //PW: new 

  for (i = 0; i < tabs.length; ++i) {
    xResizeTo(tabs[i], tw, th);
    //xHeight(tabs[i],th);
    xMoveTo(tabs[i], x, 0);
    x += tw;
    // x += xWidth(tabs[i]);
    //alert(xWidth(tabs[i])); 
    tabs[i].xTabIndex = i;
    tabs[i].onclick = tabOnClick;
    if (i!=0 || !xMoz)
      {
      xDisplay(panels[i], 'none');
      }
    xHeight(panels[i],pgh - th - 2); //new
    xMoveTo(panels[i], 0, th);
  }
  highZ = i;
  tabs[initialTab-1].onclick();
  
  function tabOnClick()
  {
    if (selectedIndex!=0 || !xMoz)
      {
      xDisplay(panels[selectedIndex], 'none');
      }
    tabs[selectedIndex].className = clsTD;
    this.className = clsTS;
   //  xShow(panels[this.xTabIndex]);
    xZIndex(this, highZ++);
    xDisplay(panels[this.xTabIndex], 'block');
    selectedIndex = this.xTabIndex;
  }

  this.onUnload = function()
  {
    if (xIE4Up) for (var i = 0; i < tabs.length; ++i) {tabs[i].onclick = null;}
  }
}

