  
  
  /* VERSION 1.041119 */ 
  
  
  // basic methods and objects ... 
  function menusClass() { 
    
    this.macintosh=navigator.userAgent.toLowerCase().indexOf('mac')!=-1; 
	this.netscape=navigator.appName.indexOf("scape")!=-1; 
	
	this.name="menus"; // name of object being used for generated menus 
    
    this.names=new Array(); // image names 
    this.paths=new Array(); // paths for gereaeted menus 
    this.uppers=new Array(); // upper images 
    this.lowers=new Array(); // lower imgaes 
    this.signals=new Array(); // signal images 
    this.dimmers=new Array(); // dimmer images 
	
    this.category=null; 
    this.images=new Object(); 
    this.imagesPath="/images/menus/"; 
    
    this.identifiers=new Array(); // layer identifiers (need to be different from image 'names') 
    this.assignMenus=true; 
    this.assignSubMenus=false; 
    this.subMenuHideDelay=2000; 
    this.delayedHide=false; 
	this.keyTop=0; 
	this.keyLeft=0; 
    this.key=new Array(); 
    this.positions=new Array(); 
	
	this.spacer="spacer.gif"; 
    
  } // end 

  var menus=new menusClass(); 
  var submenus=new menusClass(); 

  var myMenus=new menusClass(); // legacy 
  var mySubmenus=new menusClass(); // legacy 
  
  
  
  

  // swaps in single or multiple lower images .. 
  function lowerMenus() { 
    for(i=0; i<arguments.length; i++) { 
	  if(arguments[i] == null || arguments[i] == "") { continue; } 
      if(document.images[arguments[i]] && this.images[arguments[i]+"lower"]) { 
	    document.images[arguments[i]].src=this.images[arguments[i]+"lower"].src; 
	  } 
	  else if(this.ns) { 
	    for(j=0; j<document.layers.length; j++) { 
	      if(document.layers[j].document.images[arguments[i]] && this.images[arguments[i]+"lower"]) { 
	        document.layers[j].document.images[arguments[i]].src=this.images[arguments[i]+"lower"].src; 
	      } 
	    } 
	  } 
    } 
  } // end 
  menusClass.prototype.lower=lowerMenus; 

  

  

  
  
  // swaps in single or multiple upper images ... 
  function upperMenus() { 
    for(i=0; i<arguments.length; i++) { 
	  if(arguments[i] == null || arguments[i] == "") { continue; } 
      if(document.images[arguments[i]] && this.images[arguments[i]+"upper"]) { 
	    document.images[arguments[i]].src=this.images[arguments[i]+"upper"].src; 
	  } 
	  else if(this.ns) { 
  	    for(j=0; j<document.layers.length; j++) { 
	      if(document.layers[j].document.images[arguments[i]] && this.images[arguments[i]+"upper"]) { 
	        document.layers[j].document.images[arguments[i]].src=this.images[arguments[i]+"upper"].src; 
	      } 
	    } 
	  } 
	} 
  } // end 
  
  menusClass.prototype.upper=upperMenus; 
  
  
  
  
  
  // preload all upper and lower images ... 
  function preloadMenus() { 
    if(this.names==null) { return null; } 
    for(i=0; i<this.names.length; i++) { 
	  if(this.names[i] == null || this.names[i] == "") { continue; } 
	  if(this.lowers!=null && this.lowers[i]) { 
	    this.images[this.names[i]+"lower"]=new Image(); 
	    this.images[this.names[i]+"lower"].src=this.imagesPath+this.lowers[i]; 
	  } 
	  if(this.uppers!=null && this.uppers[i]) { 
	    this.images[this.names[i]+"upper"]=new Image(); 
	    this.images[this.names[i]+"upper"].src=this.imagesPath+this.uppers[i]; 
	  } 
	  if(this.signals!=null && this.signals[i]) { 
	    this.images[this.names[i]+"signal"]=new Image(); 
	    this.images[this.names[i]+"signal"].src=this.imagesPath+this.signals[i]; 
	  } 
	  if(this.dimmers!=null && this.dimmers[i]) { 
	    this.images[this.names[i]+"dimmer"]=new Image(); 
	    this.images[this.names[i]+"dimmer"].src=this.imagesPath+this.dimmers[i]; 
	  } 
	} 
  } // end 
  menusClass.prototype.preload=preloadMenus; 
  
  
  
  
  // assigns all upper images ... 
  function setupMenus() { 
    if(this.names==null) { return null; } 
	

	// assign current signal image based on category 
	if(this.category!=null && this.signals!=null && this.images[this.category+"signal"]!=null) { 
	  if(document.images[this.category] != null) { 
	    this.images[this.category+"lower"].src=this.images[this.category+"signal"].src; 
	    this.images[this.category+"upper"].src=this.images[this.category+"signal"].src; 
	  } 
	} 
	

	// assign current dimmer images based on category 
	if(this.category!=null && this.dimmers!=null) { 
	  var marker=this.names.length; 
      for(i=0; i<this.names.length; i++) { 
	    if(this.names[i] == null || this.names[i] == "") { continue; } 
	    if(this.category===this.names[i]) { 
		  marker=i; 
		  break; 
		} 
	  } 
      for(i=0; i<this.names.length; i++) { 
	    if(this.names[i] == null || this.names[i] == "") { continue; } 
	    if(i>marker) { 
	      if(document.images[this.names[i]] != null && this.images[this.names[i]+"dimmer"]!=null) { 
	        this.images[this.names[i]+"lower"].src=this.images[this.names[i]+"dimmer"].src; 
	        this.images[this.names[i]+"upper"].src=this.images[this.names[i]+"dimmer"].src; 
	      } 
	    } 
	  } 
	} 
    
	
    // assign images 
    for(i=0; i<this.names.length; i++) { 
	  if(this.names[i] == null || this.names[i] == "") { continue; } 
	  if(document.images[this.names[i]] != null) { 
	    document.images[this.names[i]].src=this.images[this.names[i]+"upper"].src; 
	  } 
	  else if(this.ns) { 
	    for(j=0; j<document.layers.length; j++) { 
		  if(document.layers[j].document.images[this.names[i]] != null) { 
	        document.layers[j].document.images[this.names[i]].src=this.images[this.names[i]+"upper"].src; 
		  } 
		} 
	  } 
	} 
  } // end 
  
  menusClass.prototype.assign=setupMenus; 
  
  
  
  
  
  
  
  
  
  
  
  // generating menus 
  function insertsMenus() { 
   if(this != null && this.name != null && this.name != "") { 
	document.write('<table '); 
	if(this.align != null && this.align != "") { document.write('align="'+this.align+'" '); } 
	document.write('border="0" cellpadding="0" cellspacing="0" id="'+this.name+'">'); 
	document.write('<tr>'); 
	if(this.spacer != null && this.spacer != "") { document.write('<td><img src="'+this.imagesPath+this.spacer+'"></td>'); } 
	for(var i=0; i<this.names.length; i++) { 
     if(this.names[i] != null && this.names[i] != "") { 
	  document.write('<td>'); 
	  document.write('<a href="'+this.paths[i]+'" '); 
	  document.write('onmouseover="'+this.name+'.lower(\''+this.names[i]+'\')" '); 
	  document.write('onmouseout="'+this.name+'.upper(\''+this.names[i]+'\')">'); 
	  document.write('<img border="0" name="'+this.names[i]+'" src="'+this.imagesPath+this.uppers[i]+'">'); 
	  document.write('</a>'); 
	  document.write('</td>'); 
	  if(this.spacer != null && this.spacer != "") { document.write('<td><img src="'+this.imagesPath+this.spacer+'"></td>'); } 
     }
	} 
	document.write('</tr>'); 
	document.write('</table>'); 
   } 
  } // end 
  
  menusClass.prototype.insert=insertsMenus; 
  
  /*
    
	features=new meusClass(); 
	features.name="features"; // required 
	
	features.images="/path/to/images/"; 
	features.spacer="spacer.gif"; 
	
	features.names=new Object(); 
	features.paths=new Object(); 
	features.uppers=new Object(); 
	features.lowers=new Object(); 
	features.signals=new Object(); 
	
	features.names[1]="alpha"; 
	features.paths[1]="/path/to/page"; 
	features.uppers[1]="alpha.gif"; 
	features.lowers[1]="alpha_lower.gif"; 
	features.signals[1]="alpha_signal.gif"; 
	
  */ 
  
  
  
  
  
  
  
  
  
  
  
  
  
  // DYNAMIC SUBMENUS ... 
  
  
  
  
  // set visibility .. 
  function setVisibility(submenu,option) { 
    if(document.getElementById(submenu)) { document.getElementById(submenu).style.visibility=option; } 
    else if(document.all[submenu]) { document.all[submenu].style.visibility=option; } 
    else if(document[submenu]) { document[submenu].visibility=option; } 
  } // end 
  menusClass.prototype.setVisibility=setVisibility; 
  
  
  // show dynamic sub menus ... 
  function showDynamicSubMenu(submenu) { 
    this.hideAllDynamicSubMenus(submenu); 
	if(submenu) { this.setVisibility(submenu,"visible"); } 
  } // end 
  menusClass.prototype.showDynamicSubMenu=showDynamicSubMenu; 
  
  
  // hide all dynamic sub menus ... 
  function hideAllDynamicSubMenus(submenu) { 
    for(i=0; i<this.identifiers.length; i++) { 
	  if(this.identifiers[i] == null) { continue; } 
      if(submenu && this.identifiers[i]==submenu) { continue; } 
      this.hideDynamicSubMenu(this.identifiers[i]); 
    } 
  } // end 
  menusClass.prototype.hideAllDynamicSubMenus=hideAllDynamicSubMenus; 
  
  
  // hide dynamic sub menus ... 
  function hideDynamicSubMenu(submenu) { 
    if(this.delayedHide!=false) { this.cancelHideDelay(); } 
	if(submenu) { this.setVisibility(submenu,"hidden"); } 
  } // end 
  menusClass.prototype.hideDynamicSubMenu=hideDynamicSubMenu; 
  
  
  // delayed hiding of all dynamic sub menus ... 
  function hidingAllDynamicSubMenus() { 
    this.delayedHide=setTimeout(this.name+'.hideAllDynamicSubMenus()',this.subMenuHideDelay); 
  } // end 
  menusClass.prototype.hidingAllDynamicSubMenus=hidingAllDynamicSubMenus; 
  
  
  
  // cancel the delayed hiding of all dynamic sub menus ... 
  function cancelHideDelay() { 
    clearTimeout(this.delayedHide);
    this.delayedHide=false; 
  } // end 
  menusClass.prototype.cancelHideDelay=cancelHideDelay;   
  
  
  
  // get position of key image ... 
  function getKeyPosition(image) { 
	var element=null,top=0,left=0; 
	
	if(document.getElementById && document.getElementById(image)) { 
	  element=document.getElementById(image); 
	} 
	else if(document.all && document.all[image]) { 
	  element=document.all[image]; 
	} 
	else if(document[image]) { 
	  element=document[image]; 
	} 
	  
	  if(element.style.offsetTop) { this.keyTop=element.style.offsetTop; } 
	  else if(element.style.pixelTop) { this.keyTop=element.style.pixelTop; } 
	  else if(this.getOffset(element,"Top")) { this.keyTop=this.getOffset(element,"Top"); } 
	  else if(element.style.top) { this.keyTop=element.style.top; } 
	  else if(element.top) { this.keyLeft=element.top; } 
	  else if(element.y) { this.keyTop=element.y; } 
	  
	  if(element.style.offsetLeft) { this.keyLeft=element.style.offsetLeft; } 
	  else if(element.style.pixelLeft) { this.keyLeft=element.style.pixelLeft; } 
	  else if(this.getOffset(element,"Left")) { this.keyLeft=this.getOffset(element,"Left"); } 
	  else if(element.style.left) { this.keyTop=element.style.left; } 
	  else if(element.left) { this.keyLeft=element.left; } 
	  else if(element.x) { this.keyLeft=element.x; } 
	
  } // end 
  menusClass.prototype.getKeyPosition=getKeyPosition; 
  
  
  
  function getOffset(image,offset) { 
	var position=0; 
    while (image!=null) { 
      position+=image["offset"+offset]; 
      image=image.offsetParent; 
    } 
 	return position; 
  } // end 
  menusClass.prototype.getOffset=getOffset;   
  
  
  
  // set dynamic sub menus positions ... 
  function adjustDynamicSubMenus(image) { 
    this.getKeyPosition(image); 
	
	var tops=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); 
	var lefts=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); 
	var i=0, j=0, topmargin=0, leftmargin=0, differentialTop=0, differentialLeft=0; 
	
	while(i<this.positions.length) { 
	  if(this.positions[i] == null || this.positions[i] == "") { continue; } 
	  tops[j]=this.positions[i]; 
	  lefts[j]=this.positions[i+1]; 
	  i+=2; 
	  j++; 
	} 
	  
	//if(document.body.topMargin) { topmargin=parseInt(document.body.topMargin); } 
	//if(document.body.leftMargin) { leftmargin=parseInt(document.body.leftMargin); } 
	
    for(i=0; i<this.identifiers.length+1; i++) { 
	  if(this.identifiers[i] == null || this.identifiers[i] == "") { continue; } 
	  
	  if(this.keyTop) { differentialTop=this.keyTop-this.key[0]; } 
	  if(this.keyLeft) { differentialLeft=this.keyLeft-this.key[1]; } 
	  
	  var positionTop=tops[i]+topmargin+differentialTop; 
	  var positionLeft=lefts[i]+leftmargin+differentialLeft; 
	  
	  //alert(this.netscape); 
	  
      if(document.getElementById && this.macintosh) { 
  	      document.getElementById(this.identifiers[i]).style.pixelTop=positionTop; 
	      document.getElementById(this.identifiers[i]).style.pixelLeft=positionLeft; 
	  } 
      else if(document.getElementById) { 
		  document.getElementById(this.identifiers[i]).style.top=positionTop; 
	      document.getElementById(this.identifiers[i]).style.left=positionLeft; 
	  } 
      else if(document.all && document.all[this.identifiers[i]]) { 
	    document.all[this.identifiers[i]].style.pixelTop=positionTop; 
	    document.all[this.identifiers[i]].style.pixelLeft=positionLeft; 
	  } 
      else { 
	    document[this.identifiers[i]].top=positionTop; 
	    document[this.identifiers[i]].left=positionLeft; 
	  } 
	
	} 
	
  } // end 
  menusClass.prototype.adjustDynamicSubMenus=adjustDynamicSubMenus; 
  
  
  
  // public methods ... 
  menusClass.prototype.show=showDynamicSubMenu; 
  menusClass.prototype.hide=hidingAllDynamicSubMenus; 
  menusClass.prototype.positioning=adjustDynamicSubMenus; 
  menusClass.prototype.position=adjustDynamicSubMenus; 
  
  
  
  

  
  
  
  

