// ***************************************************************************
// www.dhtmlgoodies.com
//		March, 14th, 2006 - Create new tabs dynamically
//		March, 15th, 2006 - Dynamically delete a tab
// ***************************************************************************
var textPadding = 3; // Padding at the left of tab text - bigger value gives you wider tabs
var strictDocType = true; 
var tabView_maxNumberOfTabs = 6;	// Maximum number of tabs
	
/* Don't change anything below here */
var dhtmlgoodies_tabObj = new Array();
var activeTabIndex = new Array();
var MSIE = navigator.userAgent.indexOf('MSIE')>=0?true:false;
var regExp = new RegExp(".*MSIE ([0-9]\.[0-9]).*","g");
var navigatorVersion = navigator.userAgent.replace(regExp,'$1');
var ajaxObjects = new Array();
var tabView_countTabs = new Array();
var tabViewHeight = new Array();
var tabDivCounter = 0;
var closeImageHeight = 8;	// Pixel height of close buttons
var closeImageWidth = 8;	// Pixel height of close buttons
	
function setPadding(obj,padding) {
  var span = obj.getElementsByTagName('SPAN')[0];
  span.style.paddingLeft = padding + 'px';
  span.style.paddingRight = padding + 'px';
}

function showTab(parentId,tabIndex) {
  var parentId_div = parentId + "_";
  var img;
  if (!document.getElementById('tabView' + parentId_div + tabIndex)) {
    return;
  }
  if (activeTabIndex[parentId]>=0) {
    if (activeTabIndex[parentId]==tabIndex) {
      return;
    }
    var obj = document.getElementById('tabTab'+parentId_div + activeTabIndex[parentId]);
    obj.className='tabInactive';
    img = obj.getElementsByTagName('IMG')[0];
    if (img.src.indexOf('tab_')==-1)img = obj.getElementsByTagName('IMG')[1];
    img.src = 'images/tab_right_inactive.gif';
    document.getElementById('tabView' + parentId_div + activeTabIndex[parentId]).style.display='none';
  }
  var thisObj = document.getElementById('tabTab'+ parentId_div +tabIndex);
  thisObj.className='tabActive';
  img = thisObj.getElementsByTagName('IMG')[0];
  if (img.src.indexOf('tab_')==-1)img = thisObj.getElementsByTagName('IMG')[1];
  img.src = 'images/tab_right_active.jpg';
  document.getElementById('tabView' + parentId_div + tabIndex).style.display='block';
  activeTabIndex[parentId] = tabIndex;
  var parentObj = thisObj.parentNode;
  var aTab = parentObj.getElementsByTagName('DIV')[0];
  countObjects = 0;
  var startPos = 2;
  var previousObjectActive = false;
  while (aTab) {
    if (aTab.tagName=='DIV') {
      if (previousObjectActive) {
        previousObjectActive = false;
        startPos-=2;
      }
      if (aTab==thisObj) {
        startPos-=2;
        previousObjectActive=true;
        setPadding(aTab,textPadding+1);
      }else{
        setPadding(aTab,textPadding);
      }
      aTab.style.left = startPos + 'px';
      countObjects++;
      startPos+=2;
    }
    aTab = aTab.nextSibling;
  }
  return;
}
	
function tabClick() {
  var idArray = this.id.split('_');
  showTab(this.parentNode.parentNode.id,idArray[idArray.length-1].replace(/[^0-9]/gi,''));
}
	
function rolloverTab() {
  if (this.className.indexOf('tabInactive')>=0) {
    this.className='inactiveTabOver';
    var img = this.getElementsByTagName('IMG')[0];
    if (img.src.indexOf('tab_')<=0)img = this.getElementsByTagName('IMG')[1];
    img.src = 'images/tab_right_over.gif';
  }
}
function rolloutTab() {
  if (this.className ==  'inactiveTabOver') {
    this.className='tabInactive';
    var img = this.getElementsByTagName('IMG')[0];
    if (img.src.indexOf('tab_')<=0)img = this.getElementsByTagName('IMG')[1];
    img.src = 'images/tab_right_inactive.gif';
  }
}
function hoverTabViewCloseButton() {
  this.src = this.src.replace('close.gif','close_over.gif');
}
function stopHoverTabViewCloseButton() {
  this.src = this.src.replace('close_over.gif','close.gif');
}
function initTabs(mainContainerID,tabTitles,activeTab,width,height,closeButtonArray,additionalTab) {
  if (!closeButtonArray)
    closeButtonArray = new Array();
  var tabDiv;
  var firstDiv;
  if (!additionalTab || additionalTab=='undefined') {
    dhtmlgoodies_tabObj[mainContainerID] = document.getElementById(mainContainerID);
    width = width + '';
    if (width.indexOf('%')<0)width= width + 'px';
    dhtmlgoodies_tabObj[mainContainerID].style.width = width;
    height = height + '';
    if (height.length>0) {
      if (height.indexOf('%')<0)height= height + 'px';
      dhtmlgoodies_tabObj[mainContainerID].style.height = height;
    }
    tabViewHeight[mainContainerID] = height;
    tabDiv = document.createElement('DIV');
    firstDiv = dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV')[0];
    dhtmlgoodies_tabObj[mainContainerID].insertBefore(tabDiv,firstDiv);
    tabDiv.className = 'dhtmlgoodies_tabPane';
    tabView_countTabs[mainContainerID] = 0;
  }else{
    tabDiv = dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV')[0];
    firstDiv = dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV')[1];
    height = tabViewHeight[mainContainerID];
    activeTab = tabView_countTabs[mainContainerID];
  }
  for(var no = 0;no < tabTitles.length; no++) {
    var aTab = document.createElement('DIV');
    aTab.id = 'tabTab' + mainContainerID + "_" +  (no + tabView_countTabs[mainContainerID]);
    aTab.onmouseover = rolloverTab;
    aTab.onmouseout = rolloutTab;
    aTab.onclick = tabClick;
    aTab.className='tabInactive';
    tabDiv.appendChild(aTab);
    var span = document.createElement('SPAN');
    span.innerHTML = tabTitles[no];
    span.style.position = 'relative';
    aTab.appendChild(span);
    if (closeButtonArray[no]) {
      var closeButton = document.createElement('IMG');
      closeButton.src = 'images/close.gif';
      closeButton.height = closeImageHeight + 'px';
      closeButton.width = closeImageHeight + 'px';
      closeButton.setAttribute('height',closeImageHeight);
      closeButton.setAttribute('width',closeImageHeight);
      closeButton.style.position='absolute';
      closeButton.style.top = '6px';
      closeButton.style.right = '0px';
      closeButton.onmouseover = hoverTabViewCloseButton;
      closeButton.onmouseout = stopHoverTabViewCloseButton;
      span.innerHTML = span.innerHTML + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
      closeButton.onclick = function() {
        deleteTab(this.parentNode.innerHTML)
      };
      span.appendChild(closeButton);
    }
    var img = document.createElement('IMG');
    img.valign = 'bottom';
    img.src = 'images/tab_right_inactive.gif';
    // IE5.X FIX
    if ((navigatorVersion && navigatorVersion<6) || (MSIE && !strictDocType)) {
      img.style.styleFloat = 'none';
      img.style.position = 'relative';
      img.style.top = '4px'
      span.style.paddingTop = '4px';
      aTab.style.cursor = 'hand';
    }	// End IE5.x FIX
    aTab.appendChild(img);
  }
  var tabs = dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV');
  var divCounter = 0;
  for(no = 0; no < tabs.length; no++) {
    if (tabs[no].className=='dhtmlgoodies_aTab' && tabs[no].parentNode.id == mainContainerID) {
      if (height.length>0)tabs[no].style.height = height;
      tabs[no].style.display='none';
      tabs[no].id = 'tabView' + mainContainerID + "_" + divCounter;
      divCounter++;
    }
  }
  tabView_countTabs[mainContainerID] = tabView_countTabs[mainContainerID] + tabTitles.length;
  showTab(mainContainerID,activeTab);
  return activeTab;
}	

function showAjaxTabContent(ajaxIndex,parentId,tabId) {
  var obj = document.getElementById('tabView'+parentId + '_' + tabId);
  obj.innerHTML = ajaxObjects[ajaxIndex].response;
}
	
function resetTabIds(parentId) {
  var tabTitleCounter = 0;
  var tabContentCounter = 0;
  var divs = dhtmlgoodies_tabObj[parentId].getElementsByTagName('DIV');
  for(var no = 0; no < divs.length; no++) {
    if (divs[no].className=='dhtmlgoodies_aTab') {
      divs[no].id = 'tabView' + parentId + '_' + tabTitleCounter;
      tabTitleCounter++;
    }
    if (divs[no].id.indexOf('tabTab')>=0) {
      divs[no].id = 'tabTab' + parentId + '_' + tabContentCounter;
      tabContentCounter++;
    }
  }
  tabView_countTabs[parentId] = tabContentCounter;
}
	
function createNewTab(parentId,tabTitle,tabContent,tabContentUrl,closeButton) {
  if (tabView_countTabs[parentId]>=tabView_maxNumberOfTabs)return;	// Maximum number of tabs reached - return
  var div = document.createElement('DIV');
  div.className = 'dhtmlgoodies_aTab';
  dhtmlgoodies_tabObj[parentId].appendChild(div);
  var tabId = initTabs(parentId,Array(tabTitle),0,'','',Array(closeButton),true);
  if (tabContent)div.innerHTML = tabContent;
  if (tabContentUrl) {
    var ajaxIndex = ajaxObjects.length;
    ajaxObjects[ajaxIndex] = new sack();
    ajaxObjects[ajaxIndex].requestFile = tabContentUrl;	// Specifying which file to get
    ajaxObjects[ajaxIndex].onCompletion = function() {
      showAjaxTabContent(ajaxIndex,parentId,tabId);
    };	// Specify function that will be executed after file has been found
    ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function
  }
}
	
function getTabIndexByTitle(tabTitle) {
  var regExp = new RegExp("(.*?)&nbsp.*$","gi");
  tabTitle = tabTitle.replace(regExp,'$1');
  for(var prop in dhtmlgoodies_tabObj) {
    var divs = dhtmlgoodies_tabObj[prop].getElementsByTagName('DIV');
    for(var no = 0; no < divs.length; no++) {
      if (divs[no].id.indexOf('tabTab') >= 0) {
        var span = divs[no].getElementsByTagName('SPAN')[0];
        var regExp2 = new RegExp("(.*?)&nbsp.*$","gi");
        var spanTitle = span.innerHTML.replace(regExp2,'$1');
        if (spanTitle == tabTitle) {
          var tmpId = divs[no].id.split('_');
          return Array(prop,tmpId[tmpId.length-1].replace(/[^0-9]/g,'')/1);
        }
      }
    }
  }
  return -1;
}
	
function addAjaxContentToTab(tabTitle,tabContentUrl) {
  var index = getTabIndexByTitle(tabTitle);
  if (index!=-1) {
    var ajaxIndex = ajaxObjects.length;
    tabId = index[1];
    parentId = index[0];
    ajaxObjects[ajaxIndex] = new sack();
    ajaxObjects[ajaxIndex].requestFile = tabContentUrl;	// Specifying which file to get
    ajaxObjects[ajaxIndex].onCompletion = function() {
      showAjaxTabContent(ajaxIndex,parentId,tabId);
    };	// Specify function that will be executed after file has been found
    ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function
  }
}
	
function deleteTab(tabLabel,tabIndex,parentId) {
  if (tabLabel) {
    var index = getTabIndexByTitle(tabLabel);
    if (index!=-1) {
      deleteTab(false,index[1],index[0]);
    }
  } else if (tabIndex>=0) {
    if (document.getElementById('tabTab' + parentId + '_' + tabIndex)) {
      var obj = document.getElementById('tabTab' + parentId + '_' + tabIndex);
      var id = obj.parentNode.parentNode.id;
      obj.parentNode.removeChild(obj);
      var obj2 = document.getElementById('tabView' + parentId + '_' + tabIndex);
      obj2.parentNode.removeChild(obj2);
      resetTabIds(parentId);
      activeTabIndex[parentId]=-1;
      showTab(parentId,'0');
    }
  }
}	