<!-- Begin
var isDOM = (document.getElementById ? true : false); 
var isIE4 = ((document.all && !isDOM) ? true : false);
var isNS4 = (document.layers ? true : false);
function getRef(id) 
{
    if (isDOM) return document.getElementById(id);
    if (isIE4) return document.all[id];
    if (isNS4) return document.layers[id];
}
function getSty(id) 
{
	return (isNS4 ? getRef(id) : getRef(id).style);
} 

// Hide timeout.
var popTimer = 0;
// Array showing highlighted menu items.
var litNow = new Array();


function popOver(menuNum, itemNum) 
{
        clearTimeout(popTimer);
        hideAllBut(menuNum);
        litNow = getTree(menuNum, itemNum);
        changeCol(litNow, true);
        targetNum = menu[menuNum][itemNum].target;
        var menuType = menu[targetNum][0].menuType;
        if (targetNum > 0) 
        {
              var tmp = new Object( document.getElementById('menu' + menuNum + 'item' + itemNum) );
              thisX = tmp.offsetLeft + 3;
              if ( menuType == 'sub' ) 
              { 
              	thisX += 100 + getMaxWidth(menuNum) + parseInt( document.getElementById('menuHolder').offsetLeft); 
              }
              thisY = parseInt(menu[menuNum][0].ref.top) + parseInt(menu[menuNum][itemNum].ref.top);
              
              if ( menuType == 'menu' ) 
              { 
              	thisY -= 5; 
              	thisX += parseInt( document.getElementById('menuHolder').offsetLeft ); 
              }
              
              with (menu[targetNum][0].ref) 
              {
              	//if submenu then left += getMaxwidth(menuNum)
              	//if menu then top += defLength
              	if ( menuType ==  'sub' )
                    left = parseInt( thisX  )+"px";
                else left = thisX + "px";

                if ( menuType == 'menu' )
                    top = parseInt(thisY + defLength) +"px";
                else top = thisY+"px";
                	
                    visibility = 'visible';
              //all "px"s above added by Stephen Davy 31/7/2008
              }
        }
}


function popOut(menuNum, itemNum) 
{	
      if ((menuNum == 0) && !menu[menuNum][itemNum].target)
      	hideAllBut(0)
      else
      	popTimer = setTimeout('hideAllBut(0)', 500);
}


function getTree(menuNum, itemNum) 
{
      // Array index is the menu number. The contents are null (if that menu is not a parent)
      // or the item number in that menu that is an ancestor (to light it up).
      itemArray = new Array(menu.length);
   
      while(1) 
      {
            itemArray[menuNum] = itemNum;
            // If we've reached the top of the hierarchy, return.
            if (menuNum == 0) return itemArray;
            
            itemNum = menu[menuNum][0].parentItem;
            menuNum = menu[menuNum][0].parentMenu;
      }
}

// Pass an array and a boolean to specify colour change, true = over colour.
function changeCol(changeArray, isOver) 
{
      for (menuCount = 0; menuCount < changeArray.length; menuCount++) 
      {
              if (changeArray[menuCount]) 
              {
                    newCol = isOver ? menu[menuCount][0].styleClass + "Over" : menu[menuCount][0].styleClass + "Back";
                    // Change the colours of the div/layer background.
                    
                    var el = document.getElementById( 'menu' + menuCount + 'item' + changeArray[menuCount] );
                          
                          if (isNS4) el.className = newCol;
                          else el.className = newCol;
              }
      }
}


function hideAllBut(menuNum) 
{
      var keepMenus = getTree(menuNum, 1);
      for (count = 0; count < menu.length; count++)
        if (!keepMenus[count])
        	menu[count][0].ref.visibility = 'hidden';
        
      changeCol(litNow, false);
}

// *** MENU CONSTRUCTION FUNCTIONS ***
// This is essentially the Menu class and the menus are instantiated from it
//function Menu(isVert, popInd, x, y, width, styleClass, menuType) 
function Menu(isVert, popInd, styleClass, menuType) 
{

      // True or false - a vertical menu?
      this.isVert = isVert;
      // The popout indicator used (if any) for this menu.
      this.popInd = popInd
      // Position and size settings.
      //this.x = 0;
      //this.y = 0;
      //this.width = width;
      
      if ( menuType == 'root' )
      	this.width = rootWidth;
      else 
      this.width = 100;

      // Parent menu and item numbers, indexed later.
      this.parentMenu = null;
      this.parentItem = null;
      // Reference to the object's style properties (set later).
      this.ref = null;
      
      //menuType : root, menu, sub
      this.menuType = menuType;
      //styleClass defines what CSS style will be used to style the menu and its items
      this.styleClass = styleClass;
}


// The Item class
function Item(text, href, frame, length, spacing, target) 
{
      this.text = text;
      this.href = href;
      this.frame = frame;
      this.length = length;
      this.spacing = spacing;
      this.target = target;
      // Reference to the object's style properties (set later).
      this.ref = null;
}

// getCellWidth
function getCellWidth( workMenu )
{
	if ( workMenu == 0 )
		return "";
	else
		return 230;
}


// getMaxWidth : receives a value specifying the menu to work on and returns the width (in pixels) of the widest cell in that menu
//		i.e the cell with the most text
function getMaxWidth( workMenu )
{
	var max = 0;
	// i starts at 1 as 0 in the menu definitions is always where the menu is defined, items start at 1
	for ( var i = 1; i < menu[workMenu].length; i++ )
	{
		var str = menu[workMenu][i].text;
		if ( str.length > max ) max = str.length;
	}
	
	max = max * 6;
	return max;
}




function writeMenus() 
{
//Google map added by Stephen Davy
if (typeof( thisPage) != "undefined")
{
if (thisPage=="contacts.php")
{
if (GBrowserIsCompatible()) {
 var map = new GMap2(document.getElementById("map"));
 map.setCenter(new GLatLng(53.786463, -1.781113), 10);
 var point = new GLatLng(53.786463, -1.781113);

 var info = "<div style='font-size: 0.7em;'>Precision Pipe Supports<br>Marcart House<br>Farnham Road<br>Bradford<br>West Yorkshire<br>BD7 3JG</div>";
 var marker= new GMarker(point);
 GEvent.addListener(marker, "click", function(){marker.openInfoWindowHtml(info);});
 map.addOverlay(marker);

 map.addControl(new GLargeMapControl());
 map.addControl(new GMapTypeControl());

}
else
{
 
}
}
}
      if (!isDOM && !isIE4 && !isNS4) return;
      for (currMenu = 0; currMenu < menu.length; currMenu++) 
      with (menu[currMenu][0]) 
      {
            // Variable for holding HTML for items and positions of next item.
            var str = '';
            itemX = 0;
            itemY = 0;
            var killStr = false; var styleClass = styleClass; var width2 = width;
            
            // Remember, items start from 1 in the array (0 is menu object itself, above).
            // Also use properties of each item nested in the other with() for construction.

            for (currItem = 0; currItem < menu[currMenu].length; currItem++) 
            with (menu[currMenu][currItem]) 
            {
                  var itemID = 'menu' + currMenu + 'item' + currItem;
                
                  if ( currItem == 0 ) 
                  { 
                  	//alert("Insert menuheader here");  
                  }  else
                  {
                                            
                          // The width and height of the menu item - dependent on orientation!
                          //var w = (isVert ? width : length);
                          //var h = (isVert ? length : width);
                          var w = width;
                          var h = 0;
                          
                          if ( currMenu == 0 ) { itemX = width2 * ( currItem - 1 ); }
                          // Create a div or layer text string with appropriate styles/properties.
                          // Thanks to Paul Maden (www.paulmaden.com) for helping debug this in IE4, apparently
                          // the width must be a miniumum of 3 for it to work in that browser.
                          if (isDOM || isIE4) 
                          {
                                str += '<div class="' + styleClass + 'Back" id="' + itemID + '" style="position: absolute; left: ' + itemX + 'px; top: ' + itemY + 'px; height: ' + h + 'px; visibility: inherit; ';
                                //"px" added by Stephen Davy 31/7/2008
                                str += '" ';
                          }
                          if (isNS4)//Stephen Davy: probably should add "px" here as well!! 
                          {
                                str += '<layer class="itemBack" id="' + itemID + '" left="' + itemX + '" top="' + itemY + '" width="" height="' + h + '" visibility="inherit" ';
                          }
                          
                                     
        	          // Add mouseover handlers and finish div/layer.
                          str += 'onMouseOver="popOver(' + currMenu + ',' + currItem + ')" onMouseOut="popOut(' + currMenu + ',' + currItem + ')">';
                          
                          // Add contents of item (default: table with link inside).
                          // In IE/NS6+, add padding if there's a border to emulate NS4's layer padding.
                          // If a target frame is specified, also add that to the <a> tag.
                          
                          
                          //This is the key to the length of each item in the menu
                          // could try a method to work out width based on text content
                          str += '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td v-align="middle" align="left" height="">' + '&nbsp;&nbsp;<a class="linkClass" href="' + href + '"' + (frame ? ' target="' + frame + '">' : '>') + text + '</a></td>';
                          if (target > 0) 
                          {
                                // Set target's parents to this menu item.
                                menu[target][0].parentMenu = currMenu;
                                menu[target][0].parentItem = currItem;
                                
                                // Add a popout indicator.
                                if (popInd) 
                                	str += '<td align="right">' + popInd + '&nbsp;</td>';
                          }
                          str += '</tr></table>' + (isNS4 ? '</layer>' : '</div>');
          
                          
                          if (isVert) 
                          	itemY += length + spacing;
                          else 
                               	itemX += length + spacing;
                               	
                          
                  }
                  
                  //end if statement to pick out menuheader and footer jobs
                 
             }
           
            //str += '</DIV>';
            
            if ( killStr ) str = '';
            
            //this is the div that holds each menu, therefore to style the menus we style this DIV
            if (isDOM) 
            {
            	  //alert("dom");
                  var newDiv = document.createElement('div');
                  document.getElementsByTagName('body').item(0).appendChild(newDiv);
                  newDiv.innerHTML = str;
                  newDiv.id = 'menu' + currMenu;
                  ref = newDiv.style;
                  ref.position = 'absolute';
                  ref.visibility = 'hidden';
                  ref.left += 100;
                      newDiv.className = styleClass;
                      var maxWidth = getMaxWidth( currMenu ) + 10;

                      if ( currMenu == 0 ) 
                      {
                       ref.width = ( (menu[currMenu].length -1 ) * width2 )+"px"; 
                      } 
                      else 
                      { 
                       ref.width = (maxWidth +3)+"px"; 
                      }
                      													//this +3 is the
                      													//width of the
                      													//border set in
                      													//the css
                      									
                      if ( currMenu == 0 ) 
                      { 
                       ref.height = (defLength - 4)+"px"; 
                      } 
                      else 
                      {
                       ref.height = (menu[currMenu].length * defLength) - (defLength-4 )+"px"; 
                      }
                      //"px" above added by Stephen Davy 31/7/2008
                  
                  //set the widths of all the items in this menu (again) now we know what the max width is for this menu
                  for ( var i = 1; i < menu[currMenu].length; i++ )
                  {
                  	if (!currMenu==0)
                  		document.getElementById('menu' + currMenu + 'item' + i).style.width = maxWidth+"px";
            //"px" added by Stephen Davy 31/7/2008
                  }
            }
            
            // Insert a div tag to the end of the BODY with menu HTML in place for IE4.
            if (isIE4) 
            {
                  document.body.insertAdjacentHTML('beforeEnd', '<div id="menu' + currMenu + 'div" ' + 'style="position: absolute; visibility: hidden">' + str + '</div>');
                  ref = getSty('menu' + currMenu + 'div');
                  //alert("ie4");
            }
            
            // In NS4, create a reference to a new layer and write the items to it.
            if (isNS4) 
            {
                  ref = new Layer(0);
                  ref.document.write(str);
                  ref.document.close();
                  //alert("ns4");
            }
            
            for (currItem = 1; currItem < menu[currMenu].length; currItem++) 
            {
                  itemName = 'menu' + currMenu + 'item' + currItem;
                  if (isDOM || isIE4) 
                  	menu[currMenu][currItem].ref = getSty(itemName);
                  if (isNS4) 
                  	menu[currMenu][currItem].ref = ref.document[itemName];
      	    }
      }
      
      with(menu[0][0]) 
      {
      	    //alert("Img at x: " + parseInt( document.getElementById('menuHolder').offsetLeft ) + ", Y: " + parseInt( document.getElementById('menuHolder').offsetTop ) );
            //OK here we set where the menu will appear.  We do this by referencing the menuHolder image element in the HTML
            //We take its vertical and horozontal offsets and apply the same values to the menu
            ref.left = parseInt( document.getElementById('menuHolder').offsetLeft )+"px"  ; 
            ref.top = parseInt( document.getElementById('menuHolder').offsetTop )+"px";
            //"px" above added by Stephen Davy 31/7/2008
            ref.visibility = 'visible';
      }
      

}


// *** OPTIONAL CODE FROM HERE DOWN ***

// These two lines handle the window resize bug in NS4. See <body onResize="...">.
// I recommend you leave this here as otherwise when you resize NS4's width menus are hidden.

var popOldWidth = window.innerWidth;
nsResizeHandler = new Function('if (popOldWidth != window.innerWidth) location.reload()');

// This is a quick snippet that captures all clicks on the document and hides the menus
// every time you click. Use if you want.

if (isNS4) document.captureEvents(Event.CLICK);
document.onclick = clickHandle;

function clickHandle(evt)
{
 if (isNS4) document.routeEvent(evt);
 hideAllBut(0);
}


// This is just the moving command for the example.

function moveRoot()
{
 with(menu[0][0].ref) left = ((parseInt(left) < 100) ? 100 : 5);
}
//  End -->
