/********************/
/* GLOBAL VARIABLES */
/********************/
var lastLayerDisplayed = '';
var lastLayer = '';
var allMenusIndex = 0;          //Index of layer in the allMenus array
var linkIndex = 0;				//Index of link array
var visibilityStatus = 'hide';  //Default visibility for all layers
var allMenus = new Array();     //Contains all instances of menus and submenus
var allLinks = new Array();     //Contains all instances of links and captions for the pulldown menu
var switchTimeout;
var bgMenuColor = "#FFFFFF";	// the background color of the pull-down menus
var zIndex = 2;					// the z-order of a pull-down menu

var isIE = false, isNS4 = false, isNS6plus = false, isNS7plus = false;

isNS4 = (document.layers) ? true : false;
isIE  = (document.all) ? true : false;
isNS6plus  = (!document.all && document.getElementById) ? true : false;
if (isNS6plus) {
  isNS7plus = (navigator.vendorSub.indexOf('7.') != -1) ? true : false;
  isNS6plus = (isNS7plus) ? false : true;
}


//rollover by img name and src
function roll(_img,_fileName,_Layer) {
 if (document.images) {  //if referencing layers in Netscape
   if ( (isNS4) && (_Layer != null) ) document.layers[_Layer].document.images[_img].src = _fileName;
	 else document.images[_img].src = _fileName;
 }
}

//wait then execute
function wait(_msecs, _method) {
  switchTimeout = setTimeout(_method,_msecs);
}

function cancelWait(_timeout) {
  if (_timeout != null || _timeout != '')
    clearTimeout(_timeout);
}

//remember last layer shown
function setLastLayer( _layer ) {
  if (_layer != '') lastLayerDisplayed = _layer;
}

//hide the remembered layer
function hideLastLayer() {
  if (lastLayerDisplayed != '') hideLayer(lastLayerDisplayed);
}

//show layer
function showLayer( _layerId ) {
  if (isIE) document.all(_layerId).style.visibility = 'visible';
  else if (isNS4) document.layers[_layerId].visibility = 'show';
  else if (isNS6plus || isNS7plus) document.getElementById(_layerId).style.visibility = 'visible';
}

//hide a layer
function hideLayer( _layerId ) {
  if (isIE) document.all(_layerId).style.visibility = 'hidden';
  else if (isNS4) document.layers[_layerId].visibility = 'hide';
	else if (isNS6plus || isNS7plus) document.getElementById(_layerId).style.visibility = 'hidden';
}

//hide all menu layers
function hideMenuLyrs() {
	for( var i = 0; i < allMenus.length; i++) {
	   if (allMenus[i].id == lastLyrShown) {
	    hideLayer( allMenus[i].id );     //hide parent layer
	    break;
	  }
	}
}

//layer object
function createLyrObj( lyrId, xPos, yPos) {
	this.id            = lyrId;
	this.left          = xPos;
	this.top           = yPos;
}

//submenu link object
function linkObj( _id, _content, _url ) {
	this.id      = _id;
	this.content = _content;
	this.url     = _url;
}

//show/hide layers and change background color based on heirarchy
function mouseEventCommands( _layer ) {
  eventString = "";
  var hideOtherLyrs = "";
  eventString = "onMouseOver=\"showLayer('" + _layer.id + "'); clearTimeout(switchTimeout); \" " +
	            "onMouseOut=\"hideLayer('" + _layer.id + "');\" ";

  return eventString;
}

//format content
function getContent( _link ) {
  contentString = '';
  contentString = "<a href='" + _link.url + "' class='" + textClass + "'>" +	 _link.content +  "</a>";
  return contentString;
}

function writeLayerOpen( _layer ) {
  var visibility;
  if (!isNS4) {
    openLayerStr = "<div " +
		       mouseEventCommands( _layer ) +
		       "id=\"" + _layer.id + "\" " +
	           "style=\"position: absolute; " +
			   "left:" + _layer.left + "px; " +
			   "top:" + _layer.top + "px; " +
			   "visibility: hidden; " +
			   "z-index: "+zIndex+";" +
			   "\">";
	}
	else if(isNS4) {
	   openLayerStr = "<layer id='" + _layer.id + "' " +
		          mouseEventCommands( _layer ) +
		          "left='" + _layer.left + "' " +
				  "top='" + _layer.top + "' " +
				  "visibility='hide' " +
				  "z-index='" + zIndex +
				  "'>";
	}
	document.write(openLayerStr);
}

//use a layer object to create a layer for IE and Netscape
function writeLayerClose() {
  var visibility;
  if (!isNS4) layerCloseStr = "</div>";
  else if(isNS4) layerCloseStr = "</layer>";
  document.write(layerCloseStr);	
}

//create table open
function writeTableOpen() {   
  var tableOpenStr = "<table class=\"pullDownMenu\" bgcolor=\"" +bgMenuColor+ "\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" +
				 	 "<tr bgcolor=\"#ff6600\">" + 
				 	 "<td><img src=\"img/global/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\"></td>" + 
				  	 "<td><img src=\"img/global/spacer.gif\" width=\"12\" height=\"1\" alt=\"\" border=\"0\"></td>" +
				 	 "<td><img src=\"img/global/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\"></td>" +
				 	 "<td><img src=\"img/global/spacer.gif\" width=\"12\" height=\"1\" alt=\"\" border=\"0\"></td>" +
				 	 "<td><img src=\"img/global/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\"></td>" +
				 	 "</tr>" + 
					 "<tr>" +
	    			  "<td bgcolor=\"#ff6600\"> " + 
					    "<img src=\"img/global/spacer.gif\" width=\"1\" height=\"6\" alt=\"\" border=\"0\">" + 
					  "</td>" +
					  "<td colspan=\"3\">" + 
					    "<img src=\"img/global/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\">" + 
					  "</td>" +
					  "<td bgcolor=\"#ff6600\">" + 
					    "<img src=\"img/global/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\">" + 
					  "</td>" +
	  				"</tr>";
  document.write(tableOpenStr);
}

//create table row
function writeTableRow( _link ) {   
  var tableRowStr = "<tr>" +
      	  			  "<td bgcolor=\"#ff6600\">" + 
					  "<img src=\"img/global/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\"></td>" + 
					  "<td></td>" + 
					  "<td>" + 
					    getContent( _link ) + 
					  "</td>" +
					  "<td></td>" +
					  "<td bgcolor=\"#ff6600\">" + 
					    "<img src=\"img/global/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\">" + 
					  "</td>" + 
	  				"</tr>" +
	  				"<tr>" +
	    			  "<td bgcolor=\"#ff6600\"> " + 
					    "<img src=\"img/global/spacer.gif\" width=\"1\" height=\"6\" alt=\"\" border=\"0\">" + 
					  "</td>" +
					  "<td colspan=\"3\">" + 
					    "<img src=\"img/global/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\">" + 
					  "</td>" +
					  "<td bgcolor=\"#ff6600\">" + 
					    "<img src=\"img/global/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\">" + 
					  "</td>" +
	  				"</tr>";
  document.write(tableRowStr);
}

//create table close
function writeTableClose() {   
  var tableCloseStr = "<tr>" + 
	             	  "<td colspan=\"5\" bgcolor=\"#ff6600\">" + 
				 	  "<img src=\"img/global/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\"></td>" +
	             	  "</tr>"+
					  "</table>";
  document.write(tableCloseStr);
}

//Netscape resize fix
if (isNS4) {
  origWidth = innerWidth;
  origHeight = innerHeight;
}
function resizeFix() {
   if (innerWidth != origWidth || innerHeight != origHeight) 
   location.reload();
}
if (isNS4) onresize = resizeFix;


function storeLinkInfo( _linkArray ) {
  var menuCaption = '';
  var menuItemUrl = '', itemUrl = new Array();
  for( var j = 0; j < _linkArray.length; j++ ) {
    for( var k = 0; k < _linkArray[j].length; k++ ) {
      linkId  = j;
      itemUrl = _linkArray[j][k].split("||");      // chose weird string to split on so it will not be mistaken for actual content
      menuCaption = itemUrl[0];                    // this is the menu item displayed
      menuItemUrl = itemUrl[1];                    // this is the menu item's URL 
      if ((menuItemUrl == null) ||  (menuItemUrl == '')) menuItemUrl = '#';
      itemUrl = '';		
      allLinks[linkIndex] = new linkObj( linkId, menuCaption, menuItemUrl );
	  linkIndex ++;
	}
  }
}

function buildMenu( _leftDistanceArray ) {
  for( var i = 0; i < _leftDistanceArray.length; i++ )	{
    newLayerId = 'menu' + i;
	distanceLeft = _leftDistanceArray[i];
	distanceTop = distanceFromTopInit;	//this is set in the defaults section
	//Now create the layer and put it in a container for later use.  This array will contain ALL menus and their items.
	//Use as reference: 	
    allMenus[allMenusIndex] = new createLyrObj(newLayerId, distanceLeft, distanceTop);	
	allMenusIndex ++;
  }  
}

function writeMenus( _allMenusArray, _allLinksArray) {
  for( var m = 0; m < _allMenusArray.length; m++ )	{

    writeLayerOpen( _allMenusArray[m] );
	
    writeTableOpen();

	for( var n = 0; n < _allLinksArray.length; n++ ) {
	  if (_allLinksArray[n].id == m) {
	    writeTableRow( _allLinksArray[n] );
	  }
	}

	writeTableClose()
	writeLayerClose()
  } 
}
