// Javascript document 

/*
Menus for home pages etc.

	Receive CallingObj=Object calling(li, td etc.), Menuname=menu name, MVisable=menu visibility, e=event (mouseover etc.)
	get position of calling object and parent object. 
	set position of menu
	
	if statements based on menus, so that other menus stay open until done.

*/

var disappeardelay=250 //menu disappear speed onMouseout (in miliseconds)
var horizontaloffset=5 //horizontal offset of menu from default location. (0-5 is a good value)

function mymenufunction(CallingObj, Menuname, MVisable, e){
		//check browser to see which we have (true false?)
		var ie4=document.all;
		var ns6=document.getElementById&&!document.all;
		
		/*********** testing check of browser ********************		
			alert("Checked browser: ");
			if(ns6){
				alert("ns6="+ns6 );
				}
			if(ie4){
				alert("ie4="+ie4 );
				}
		*********** End testing check of browser *****************/
		
		
		
		/************* Stop event from continuing *********************/ 
				if (window.event) {
					event.cancelBubble=true;
					//alert("window event is true");
				}
				else if (e.stopPropagation){ 
					e.stopPropagation();
					//alert("e.stopPropagation() is true");
				}
		/************* END Stop event from continuing *********************/
		
		/******************* testing verify menu called ******************/
		//alert("Menuname "+Menuname);
		/******************* END testing verify menu called **************/
		
/**************************************************************************************/		
/*********** Get the position of the calling element and the parent object*************/		

		var offsetLeft=CallingObj.offsetLeft;//left position calling object
		var offsetTop=CallingObj.offsetTop;// top position of calling object
		ParentElement=CallingObj.offsetParent;//parent position
		noffsetLeft=offsetLeft+ParentElement.offsetLeft;//new offset
		noffsetTop=offsetTop+ParentElement.offsetTop;//new offset
		
		//test alert:
		//alert("Calling object left position is "+offsetLeft+".<br> Calling Object top position is "+offsetTop+".<br> New position left is "+noffsetLeft+ ".<br> New position top is "+noffsetTop+".");
		
/*********** END get the position of the calling element and the parent object**********/
/***************************************************************************************/


/***************************************************************************************/
/*********** 1)Create a variable to hold the object call for the menu, dropmenuobj. 
************  It is a different call if it is internet explorer or netscape. The 
************  dropmenuobj will old whatever version applies.
************ 2)Set the visibility of the menu. The Mvisible is the current state of the menu
************ 3)Set the new layer position.
***************************************************************************************/


		/*********************** Set the dropmenuobj. *********************************/

				dropmenuobj=document.getElementById? document.getElementById(Menuname) : Menuname;
				
		/*********************** END Set the dropmenuobj. ******************************/
		
		
		
		/*********** Set the Visability. The MVisable is the current state of the menu.******/

				//set visability
					if(MVisable=="hidden"){
					dropmenuobj.style.visibility="visible";
					//alert("set to visible");
					}else{
					dropmenuobj.style.visibility="hidden";
					//alert("set to hidden");
					}
					
		/*********** END Set the visability. The MVisable is the current state of the menu.***/
		
		
/***************************************************************************************/
/********* For testing get the values for the layer position before setting*************/
/***************************************************************************************/
					//alert("set position");
//					if (ie4){
//					alert(" pre left Positon is "+document.getElementById(Menuname).style.left);
//					}else{
//					alert(" pre left Positon is "+dropmenuobj.style.left);
//					}
//					if (ie4){
//					alert(" pre top Positon is "+document.getElementById(Menuname).style.top);
//					}else{
//					alert(" pre top Positon is "+dropmenuobj.style.top);
//					}
					
/***************************************************************************************/
/********* END For testing get the values for the layer position before setting*********/
/***************************************************************************************/

/***************************************************************************************/
/**************************** Set the top and left menu position ***********************/
/***************************************************************************************/
				//set top & left
				
/*					dropmenuobj.style.left=noffsetLeft-clearbrowseredge(CallingObj, "rightedge")+dropmenuobj.offsetWidth+horizontaloffset+"px";
					dropmenuobj.style.top=noffsetTop-clearbrowseredge(CallingObj, "bottomedge")+"px";	
					alert("clearbrowseredge(CallingObj, 'rightedge')= "+clearbrowseredge(CallingObj, "rightedge"));
					alert("clearbrowseredge(CallingObj, 'bottomedge')= "+clearbrowseredge(CallingObj, "bottomedge"));
*/
var menulevel=1;
if (Menuname=='MarketingLayer' || Menuname=='SystemOpLayer' || Menuname=='InformationalPostingsLayer'|| Menuname=='CustomerActivitiesLayer' || Menuname=='ContactsLayer'){
	menulevel=1;
	menushift=menulevel*200;
		if(Menuname=='ContactsLayer'){
			menushift=195;
			}
	}else if (Menuname=='SystemOpCalibrateLayer' || Menuname=='SystemOpHoldingLayer' || Menuname=='IPCapacityLayer' || Menuname=='IPGasQualityLayer' || Menuname=='IPAffiliateLayer' || Menuname=='IPIndexCustLayer' || Menuname=='IPNonDiscrimLayer' || Menuname=='IPMiscReportingRqtsLayer' || Menuname=='IPNoticesLayer' || Menuname=='IPOrgChartLayer' || Menuname=='IPStandardsConductLayer' || Menuname=='IPQPCTariffLayer'|| Menuname=='IPTransHoldingLayer' || Menuname=='IPTransactionalLayer' || Menuname=='IPCustomerActivitiesLayer'){
		menulevel=2;
		//set menu width for level 2
			if(Menuname=='SystemOpCalibrateLayer' ){
			menushift=206;
			}
			if(Menuname=='SystemOpHoldingLayer' ){
			menushift=206;
						}
			if(Menuname=='IPCapacityLayer' ){
			menushift=204;
			}
			if( Menuname=='IPGasQualityLayer'){
			menushift=204;
			}
			if( Menuname=='IPAffiliateLayer' ){
			menushift=204;
			}
			if( Menuname=='IPIndexCustLayer'){
			menushift=204;
			}
			if( Menuname=='IPNonDiscrimLayer' ){
			menushift=204;
			}
			if( Menuname=='IPMiscReportingRqtsLayer' ){
			menushift=204;
			}
			if( Menuname=='IPNoticesLayer' ){
			menushift=204;
			}
			if( Menuname=='IPOrgChartLayer' ){
			menushift=204;
			}
			if( Menuname=='IPStandardsConductLayer' ){
			menushift=204;
			}
			if( Menuname=='IPQPCTariffLayer' ){
			menushift=204;
			}
			if( Menuname=='IPTransHoldingLayer' ){
			menushift=204;
			}
			if( Menuname=='IPTransactionalLayer' ){
			menushift=204;
			}
			
			if( Menuname=='IPCustomerActivitiesLayer' ){
			menushift=204;
			}			

			
			} else if(Menuname=='SystemOpSouthLayer' || Menuname=='SystemOpNorthLayer' || Menuname=='IPCapAvailLayer' || Menuname=='IPCapUnsubLayer' || Menuname=='IPCapStorageLayer' || Menuname=='IPTransFirmLayer' || Menuname=='IPTransInterruptibleLayer' ){
			menulevel=3;
			//set menu width for level 3

			
			if(Menuname=='SystemOpSouthLayer'){
			menushift=200;
			}
			
			if( Menuname=='SystemOpNorthLayer' ){
			menushift=200;
			}
			
			if( Menuname=='IPCapAvailLayer' ){
			menushift=200;
			}
			
			if( Menuname=='IPCapUnsubLayer' ){
			menushift=200;
			}
			
			if( Menuname=='IPCapStorageLayer' ){
			menushift=200;
			}
			
			if(Menuname=='IPTransFirmLayer' ){
			menushift=200;
			}
			
			if(Menuname=='IPTransInterruptibleLayer' ){
			menushift=200;
			}
			
			
			
		}

					//var menulevel=1;//commented out 9/23/2008
					//var menushift=menulevel*200;//commented out 9/23/2008
					
				
					
					
					var verticaladjust = -5;
					if(Menuname=='SystemOpHoldingLayer'){
						verticaladjust = -6;
						}
					if(Menuname=='IPTransHoldingLayer'){
						verticaladjust = -6;
						}	
					dropmenuobj.style.left=noffsetLeft+menushift+"px";//add menu shift to default
					dropmenuobj.style.top=noffsetTop+verticaladjust+"px";	
					//alert("clearbrowseredge(CallingObj, 'rightedge')= "+clearbrowseredge(CallingObj, "rightedge"));
					//alert("clearbrowseredge(CallingObj, 'bottomedge')= "+clearbrowseredge(CallingObj, "bottomedge"));
					
/***************************************************************************************/
/************************ END Set the top and left menu position ***********************/
/***************************************************************************************/

/***************************************************************************************/
/*********** For testing get the values for the layer position AFTER setting************/
/***************************************************************************************/
//				if (ie4){
//					alert("Post left Positon is "+document.getElementById(Menuname).style.left);
//					}else{
//					alert("Post left Positon is "+dropmenuobj.style.left);
//					}
//					if (ie4){
//					alert("Post top Positon is "+document.getElementById(Menuname).style.top);
//					}else{
//					alert("Post top Positon is "+dropmenuobj.style.top);
//					}

/***************************************************************************************/
/*********** END For testing get the values for the layer position AFTER setting *******/
/***************************************************************************************/		
			
			/*
			if(Menuname=="MarketingLayer"){
				alert("Menu name is "+ Menuname)
				dropmenuobj=document.getElementById? document.getElementById("MarketingLayer") : MarketingLayer;
				//set visability
					if(MVisable=="hidden"){
					dropmenuobj.style.visibility="visible";
					//alert("set to visible");
					}else{
					dropmenuobj.style.visibility="hidden";
					//alert("set to hidden");
					}
					//alert("set position");
					if (ie4){
					alert(" pre left Positon is "+document.getElementById("MarketingLayer").style.left);
					}else{
					alert(" pre left Positon is "+MarketingLayer.style.left);
					}
					if (ie4){
					alert(" pre top Positon is "+document.getElementById("MarketingLayer").style.top);
					}else{
					alert(" pre top Positon is "+MarketingLayer.style.top);
					}
				//set top & left
					dropmenuobj.style.left=noffsetLeft-clearbrowseredge(CallingObj, "rightedge")+dropmenuobj.offsetWidth+horizontaloffset+"px";
					dropmenuobj.style.top=noffsetTop-clearbrowseredge(CallingObj, "bottomedge")+"px";	
alert("clearbrowseredge(CallingObj, 'rightedge')= "+clearbrowseredge(CallingObj, "rightedge"));
alert("clearbrowseredge(CallingObj, 'bottomedge')= "+clearbrowseredge(CallingObj, "bottomedge"));
				
				if (ie4){
					alert("Post left Positon is "+document.getElementById("MarketingLayer").style.left);
					}else{
					alert("Post left Positon is "+MarketingLayer.style.left);
					}
					if (ie4){
					alert("Post top Positon is "+document.getElementById("MarketingLayer").style.top);
					}else{
					alert("Post top Positon is "+MarketingLayer.style.top);
					}


			}*/
			
	

	
	
	}// end my menu fuction

/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
function mymenuhide(Menuname){
		// get object reference by browser type.
		dropmenuobj=document.getElementById? document.getElementById(Menuname) : Menuname;
		// hide menu	
		dropmenuobj.style.visibility="hidden";
			
	}


/********************************************************************************/
/********************************************************************************/
/********************************************************************************/

/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
function mymenushow(Menuname){
		
		// get object reference by browser type.
		dropmenuobj=document.getElementById? document.getElementById(Menuname) : Menuname;
		// hide menu	
		dropmenuobj.style.visibility="visible";
			
	}


/********************************************************************************/
/********************************************************************************/
/********************************************************************************/

/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
function mymenuIPHide(Menuname){// hide all but this menu
// hide all of the informational posting menus that are called from the Informational Postings Layer
	mymenuhide('IPCapacityLayer');
	mymenuhide('IPAffiliateLayer');
	mymenuhide('IPGasQualityLayer');
	mymenuhide('IPIndexCustLayer');
	mymenuhide('IPNonDiscrimLayer');
	mymenuhide('IPMiscReportingRqtsLayer');	
	mymenuhide('IPNoticesLayer');
	mymenuhide('IPOrgChartLayer');
	mymenuhide('IPStandardsConductLayer');
	mymenuhide('IPQPCTariffLayer');
	mymenuhide('IPTransactionalLayer');
	mymenuhide('IPTransHoldingLayer');
	mymenuhide('IPOtherLayer');
	mymenuhide('IPCustomerActivitiesLayer');	
	
		 if (Menuname=='none'){// if menu is none than hide all else show current menu
			 //end script
			 }else{
				/* if transactional menu then show both the holding and the regular transactional menus */
				if(Menuname=='IPTransactionalLayer'){
				mymenushow('IPTransHoldingLayer');
				mymenushow('IPTransactionalLayer');
				} else{
				//show current
				mymenushow(Menuname);
				}
			
		}	

	}


/********************************************************************************/
/********************************************************************************/
/********************************************************************************/

/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
function mymenuhideall(){
	mymenuhide('ContactsLayer');
	mymenuhide('MarketingLayer');
	
	mymenuhide('SystemOpLayer');
	mymenuhide('SystemOpHoldingLayer');
	mymenuhide('SystemOpCalibrateLayer');
	mymenuhide('SystemOpSouthLayer');
	mymenuhide('systemOpNorthLayer');

	mymenuhide('InformationalPostingLayer');

	mymenuhide('IPCapacityLayer');
	mymenuhide('IPAffiliateLayer');
	mymenuhide('IPGasQualityLayer');
	mymenuhide('IPIndexCustLayer');
	mymenuhide('IPNonDiscrimLayer');
	mymenuhide('IPMiscReportingRqtsLayer');	
	mymenuhide('IPNoticesLayer');
	mymenuhide('IPOrgChartLayer');
	mymenuhide('IPStandardsConductLayer');
	mymenuhide('IPQPCTariffLayer');
	mymenuhide('IPTransHoldingLayer');
	mymenuhide('IPTransactionalLayer');
	
	mymenuhide('IPTransFirmLayer');
	mymenuhide('IPTransInterruptibleLayer');
	mymenuhide('IPCustomerActivitiesLayer');
	
	mymenuhide('CustomerActivitiesLayer');
	
	
	
	}


/********************************************************************************/
/********************************************************************************/
/********************************************************************************/



// JavaScript Document

/***********************************************
* AnyLink Vertical Menu- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

/////No further editting needed

var ie4=document.all
var ns6=document.getElementById&&!document.all

if (ie4||ns6)
document.write('<div id="dropmenudiv" style="visibility:hidden;width: 160px" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)">Default Menu</div>')




function dropdownmenu(obj, e, menucontents, menuwidth){
//stop event from contiuing
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
// check to see which menu it is and set the dropMenuObj
	switch (menucontents) {
		case "ContactsLayer": 
		dropmenuobj=document.getElementById? document.getElementById("ContactsLayer") : ContactsLayer
		break;

		case "IPOtherLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPOtherLayer") : IPOtherLayer
		break;
	
		case "SystemOpLayer": 
		dropmenuobj=document.getElementById? document.getElementById("SystemOpLayer") : SystemOpLayer
		break;
			
		case "SystemOpHoldingLayer": 
		dropmenuobj=document.getElementById? document.getElementById("SystemOpHoldingLayer") : SystemOpHoldingLayer
		break;	
		
		case "SystemOpCalibrateLayer": 
		dropmenuobj=document.getElementById? document.getElementById("SystemOpCalibrateLayer") : SystemOpCalibrateLayer
		break;
		
		
		case "SystemOpSouthLayer": 
		dropmenuobj=document.getElementById? document.getElementById("SystemOpSouthLayer") : SystemOpSouthLayer
		break;
			
		
		case "systemOpNorthLayer": 
		dropmenuobj=document.getElementById? document.getElementById("systemOpNorthLayer") : systemOpNorthLayer
		break;

		
		case "InformationalPostingLayer": 
		dropmenuobj=document.getElementById? document.getElementById("InformationalPostingLayer") : InformationalPostingLayer
		break;
	
		
		case "IPCapacityLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPCapacityLayer") : IPCapacityLayer
		break;
	
		
		case "IPCapAvailLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPCapAvailLayer") : IPCapAvailLayer
		break;
		
		
		case "IPGasQualityLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPGasQualityLayer") : IPGasQualityLayer
		break;
	
		
		case "IPCapUnsubLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPCapUnsubLayer") : IPCapUnsubLayer
		break;
	
		
		case "IPCapStorageLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPCapStorageLayer") : IPCapStorageLayer
		break;
	
		
		case "IPAffiliateLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPAffiliateLayer") : IPAffiliateLayer
		break;
	
		
		case "IPIndexCustLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPIndexCustLayer") : IPIndexCustLayer
		break;

		case "IPNonDiscrimLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPNonDiscrimLayer") : IPNonDiscrimLayer
		break;		
		
		case "IPMiscReportingRqtsLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPMiscReportingRqtsLayer") : IPMiscReportingRqtsLayer
		break;
	
		case "IPNoticesLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPNoticesLayer") : IPNoticesLayer
		break;

		
		case "IPOrgChartLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPOrgChartLayer") : IPOrgChartLayer
		break;
		
		case "IPStandardsConductLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPStandardsConductLayer") : IPStandardsConductLayer
		break;	
		
		case "IPQPCTariffLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPQPCTariffLayer") : IPQPCTariffLayer
		break;
		
		case "IPTransHoldingLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPTransHoldingLayer") : IPTransHoldingLayer
		break;	
		
		case "IPTransactionalLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPTransactionalLayer") : IPTransactionalLayer
		break;

		
		case "IPTransFirmLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPTransFirmLayer") : IPTransFirmLayer
		break;
	
		
		case "IPTransInterruptibleLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPTransInterruptibleLayer") : IPTransInterruptibleLayer
		break;
		
	
		case "IPCustomerActivitiesLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPCustomerActivitiesLayer") : IPCustomerActivitiesLayer
		break;		
	
		
		case "CustomerActivitiesLayer": 
		dropmenuobj=document.getElementById? document.getElementById("CustomerActivitiesLayer") : CustomerActivitiesLayer
		break;
		
		
		case "IPOtherLayer": 
		dropmenuobj=document.getElementById? document.getElementById("IPOtherLayer") : IPOtherLayer
		break;
	
		
		//default: dropmenuobj = dropmenudiv;
	}
	
	if(menucontents=="MarketingLayer"){
	dropmenuobj=document.getElementById? document.getElementById("MarketingLayer") : MarketingLayer
	}
		//alert(dropmenuobj)// received [object]
		//populatemenu(menucontents)
	/* get positioning of the object calling the menu*/
	var offsetLeft=obj.offsetLeft;//left position calling object
	var offsetTop=obj.offsetTop;// top position of calling object
	ParentElement=obj.offsetParent;//parent position
	noffsetLeft=offsetLeft+ParentElement.offsetLeft;//new offset
	noffsetTop=offsetTop+ParentElement.offsetTop;//new offset

	dropmenuobj.style.left=noffsetLeft-clearbrowseredge(obj, "rightedge")+dropmenuobj.offsetWidth+horizontaloffset+"px"
	dropmenuobj.style.top=noffsetTop-clearbrowseredge(obj, "bottomedge")+"px"

	if (ie4||ns6){
	showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth)
	}

return clickreturnvalue()
}



function getposOffset(what, offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null){
//totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}


function showhide(obj, e, visible, hidden, menuwidth){
if (ie4||ns6)
dropmenuobj.style.left=dropmenuobj.style.top=-500
dropmenuobj.widthobj=dropmenuobj.style
dropmenuobj.widthobj.width=menuwidth
if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
obj.visibility=visible
else if (e.type=="click")
obj.visibility=hidden
}

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge){
var edgeoffset=0
if (whichedge=="rightedge"){
var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
if (windowedge-dropmenuobj.x-obj.offsetWidth < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure+obj.offsetWidth
}
else{
var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset
var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move menu up?
edgeoffset=dropmenuobj.contentmeasure-obj.offsetHeight
if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either? (position at top of viewable window then)
edgeoffset=dropmenuobj.y
}
}
return edgeoffset
}

function populatemenu(what){
if (ie4||ns6)
dropmenuobj.innerHTML=what.join("")
}

function clickreturnvalue(){
if (ie4||ns6) return false
else return true
}

function contains_ns6(a, b) {
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}

function dynamichide(e){
if (ie4&&!dropmenuobj.contains(e.toElement))
delayhidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
delayhidemenu()
}

function hidemenu(e){
if (typeof dropmenuobj!="undefined"){
if (ie4||ns6)
dropmenuobj.style.visibility="hidden"
}
}

function delayhidemenu(){
if (ie4||ns6)
delayhide=setTimeout("hidemenu()",disappeardelay)
}

function clearhidemenu(){
if (typeof delayhide!="undefined")
clearTimeout(delayhide)
}

