// -- ' ---------------------------------------------------------------------------
// -- ' %MODULE:
// -- '  vtabs1.js - vertical tabs combined with folder tabs
// -- ' ---------------------------------------------------------------------------
// -- '
// -- ' %DESCRIPTION:
// -- '    tabbed folders containing vertical tabs
// -- '    within each folder
// -- '
// -- ' %AUTHOR:
// -- '  EDS 
// -- '
// -- ' %COPYRIGHT:
// -- '  Copyright (c) 2006 Electronic Data Systems. All Rights Reserved.
// -- '
// -- '----------------------------------------------------------------------------
// -- 
var currTabIdx = '';
var currVTabIdx = 1;

function vtab1ToggleTabs (sTabsUL, sTabIdx, sTabContentsUL) {
    // -- alert ('sTabsUL: ' + sTabsUL + '  sTabIdx: ' + sTabIdx + '  sTabContentsUL: ' + sTabContentsUL);
	 
    // -- collapse all vtab sets except the one belonging to current tab
	 // --
	 var sVTabIdx = 'Vt' + sTabIdx;
	 var oUL = document.getElementById('V' + sTabsUL );
	 var sVTabsId = oUL.id;
	 var oTheLIs = oTheLIs = oUL.getElementsByTagName('li');
	 var oTheLI;

	 for ( var i = 0; i < oTheLIs.length; i++ ) {
		 oTheLI = oTheLIs.item(i)
	    if (isVTabGroup(oTheLI,sVTabsId )) {
			  if (oTheLI.getElementsByTagName('ul').item(0).id == sVTabIdx) {
			     oTheLI.className = 'disOn';
			  }
			  else {
			     oTheLI.className = 'disOff';
		     }
		 }
	 }
	 
	 
	 
	 // -- show current tab
    currTabIdx = sTabIdx;
    oUL = document.getElementById (sTabsUL);
    var oSelectedLI = document.getElementById('t' + sTabIdx);
	  
	//if ( oSelectedLI.className == 'current' ) {
		// -- tab already selected; nada
		//return (false);
	//}
	
	oTheLIs = oUL.getElementsByTagName('li');
	var sId;
	 
	// -- de-select all tabs 
	for (var i = 0; i < oTheLIs.length; i++) {
		 oTheLI = oTheLIs.item(i);

		 oTheLI.className = 'tab';
		 oTheLI.getElementsByTagName('a').item(0).className = ''; 
   }
	// -- select this tab
	oSelectedLI.className = 'current';
	oSelectedLI.getElementsByTagName('a').item(0).className = 'on';


	
    // -- update this tabs contents

    // -- first collapse all vtab contents except
	 // -- the contents for the first vtab

   oUL = document.getElementById('vtc' + sTabIdx);
	oTheLIs = oUL.getElementsByTagName('li');
   for (var i = 1; i < oTheLIs.length; i++) {
	   oTheLIs.item(i).style.display = 'none';
	}
	//oTheLIs.item(0).style.display = 'inline';

   // -- highlight first vtab & display its conents
	
	vtab1FirstNonBlankVTab (sVTabIdx, 'vtc' + sTabIdx);
	//vtab1FirstNonBlankVTab (sVTabIdx, sTabContentsUL);
	//vtab1ToggleVTabs  (sVTabIdx, sTabContentsUL, 4);


	oUL = document.getElementById (sTabContentsUL);
   oTheLIs = oUL.getElementsByTagName('li');	

	for (var i = 0; i < oTheLIs.length; i++) {
		 oTheLI = oTheLIs.item(i);
		 sId = oTheLI.id;
		 if (sId) {
		    if (sId.substring(0,2) == 'tc') {
			    if (sId == 'tc' + sTabIdx) {
					 // -- this is the list item (li) holding all the 
					 // -- contents for for all vtabs for the selected tab		 			     	 
	              				 				 
					 // -- display the current tab/vtab contents
				    oTheLI.style.display = 'block';
				 }
				 else {
				    oTheLI.style.display = 'none';
				 }
			 }
       }
   }	
	

	
	return (false);
}


function vtab1ToggleVTabs (sVTabsUL, sVTabsContentsUL, whichVTabNum) {

	
	var oUL = document.getElementById(sVTabsUL);
	var oLIs = oUL.getElementsByTagName('li');
	var iNumVTabs = oLIs.length - 2;
	
   currVTabIdx = whichVTabNum;
	
	// -- select current vtab
	// -- UL will have an extra LI at beginning and
	// --    an extra LI at end

   for (var i=1; i <= iNumVTabs; i++) {
		if (oLIs.item(i).className.indexOf('Blank') < 0) {
   		if ( i != whichVTabNum ) {
	   	   oLIs.item(i).className = 'vTab';
		   }
		   else {
			   oLIs.item(i).className = 'vTab curr';
		   }
		}
	}
	

   // -- display current vtab's contents
	// --
   displayVTabContents(sVTabsContentsUL, iNumVTabs, whichVTabNum - 1);
	

	return (false);
}


function vtab1FirstNonBlankVTab (sVTabsUL, sVTabsContentsUL) {
	var oUL = document.getElementById(sVTabsUL);
	var oLIs = oUL.getElementsByTagName('li');
	var iNumVTabs = oLIs.length - 2;
	
	var idxToVTC = -1;
		
	// -- select current vtab
	// -- UL will have an extra LI at beginning and
	// --    an extra LI at end

   for (var i=1; i <= iNumVTabs; i++) {
		if (oLIs.item(i).className.indexOf('Blank') < 0) {
   		if (idxToVTC > -1) {
	   	   oLIs.item(i).className = 'vTab';
			}
			else {
				// -- vtab LIs do not have the extra blank LI
				// -- at beginning and end to the index to
				// -- a vtab's contents is 1 less than the
				// -- index to the vtab itself
				// --
				idxToVTC = i - 1;
		      oLIs.item(i).className = 'vTab curr';
            currVTabIdx = i;
		   }
		}
	}
   displayVTabContents(sVTabsContentsUL, iNumVTabs, idxToVTC);


   return (false);

}	

function displayVTabContents(sVTabsContentsUL, iNumVTabs, whichLI) {
	var oUL = document.getElementById(sVTabsContentsUL);
	var oLIs = oUL.getElementsByTagName('li');
//alert ('displayVTab' + whichLI);
   for (var i=0; i < iNumVTabs; i++) {
      if ( i != whichLI ) {
	      oLIs.item(i).style.display = 'none';
		}
		else {
		   oLIs.item(i).style.display = 'block';
			//alert (i + ':' + sVTabsContentsUL + ':' + oLIs.item(i).innerHTML);
		}
	}
	
   return (false);
}


function isVTabGroup (oTheLI, sParentId) {

   var oParent;
	var rc = false;
	oParent = oTheLI.parentNode;
	if (oParent) {
      // -- nada
   }
	else {
		oParent = oTheLI.parentElement;
	}
	
	if (oParent) {
		if (oParent.id == sParentId) {
			rc = true;
		}
	}
	else {
		
      if (oTheLI.getElementsByTagName('ul').item(0)) {
		   rc = true;
	   }
	}
		
   return (rc);
}

/*
function isAnObject(a) {
    return (a && typeof a == 'object');
}
function isNotDefined(a) {
    return typeof a == 'undefined';
} 
function isDefined(a) {
    return typeof a != 'undefined';
} 
function isAFunction(a) {
    return typeof a == 'function';
}

function isEmpty(o) {
    var i, v;
    if (isAnObject(o)) {
        for (i in o) {
            v = o[i];
            if (isNotDefined(v) && isAFunction(v)) {
                return false;
            }
        }
    }
    return true;
}
*/


