function runSlideShow(){
   if (document.all){
      document.images.SlideShow.style.filter="blendTrans(duration=3)"
      document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"
      document.images.SlideShow.filters.blendTrans.Apply()      
   }
   document.images.SlideShow.src = preLoad[j].src
   document.images.SlideShow.url = preLoad[j].url
   if (document.all){
      document.images.SlideShow.filters.blendTrans.Play()
   }
   j = j + 1
   if (j > (p-1)) j=0
   t = setTimeout('runSlideShow()', slideShowSpeed)
}

function openlink(){
	var imageurl = document.images.SlideShow.url;
	document.location=imageurl;
//	newWindow(imageurl,'banner','toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes');
 }
function goToURL() { //v3.0
  var i, args=goToURL.arguments; document.returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
 
//Window open
<!--
function newWindow(url,name,features){
var newWin=window.open(url,name,features);
}
//-->

//Confirmation window
function confirmWindow(text,link) {
        var submitOK = confirm(text)
	if ( submitOK )

			window.location=link
}

//Enables/Disables a field
function disableenable_Disable(disableenable_par,disableenable_obj,disableenable_state){
 if (disableenable_par){disableenable_clds=disableenable_AllElements(document.getElementById(disableenable_par)); }
 else { disableenable_clds=disableenable_AllElements(disableenable_obj.parentNode); }
 if (!disableenable_obj.ary){
  disableenable_obj.ary=new Array();
  for (disableenable_0=0;disableenable_0<disableenable_clds.length;disableenable_0++){
   if (disableenable_clds[disableenable_0].tagName=='INPUT'||disableenable_clds[disableenable_0].tagName=='SELECT'||disableenable_clds[disableenable_0].tagName=='TEXTAREA'){
    disableenable_obj.ary[disableenable_obj.ary.length]=disableenable_clds[disableenable_0];
   }
  }
 }
 for (disableenable_1=0;disableenable_1<disableenable_obj.ary.length;disableenable_1++){
  disableenable_obj.ary[disableenable_1].removeAttribute('disabled');
 }
 if (disableenable_obj.checked==disableenable_state){
  for (disableenable_2=0;disableenable_2<disableenable_obj.ary.length;disableenable_2++){
    disableenable_obj.ary[disableenable_2].setAttribute('disabled','disabled');
  }
 }
 disableenable_obj.removeAttribute('disabled');
}

//Sets the form action depending on which button is clicked
 function setFormAction()
{
  if(document.pressed == '1')
  {
   document.bookings_dates.action ="?section=bookings";
  }
  else
  if(document.pressed == 'ADD BOOKING')
  {
    document.bookings_dates.action ="index.php?section=bookings&action=confirm";
  }
  return true;
}

//Enables/Disables a field dependant on a supplied value
function disableenable_Disable2(disableenable_par,disableenable_obj,disableenable_state,formvalue){

 if (disableenable_par){disableenable_clds=disableenable_AllElements(document.getElementById(disableenable_par)); }
 else { disableenable_clds=disableenable_AllElements(disableenable_obj.parentNode); }
 if (!disableenable_obj.ary){
  disableenable_obj.ary=new Array();
  for (disableenable_0=0;disableenable_0<disableenable_clds.length;disableenable_0++){
   if (disableenable_clds[disableenable_0].tagName=='INPUT'||disableenable_clds[disableenable_0].tagName=='SELECT'||disableenable_clds[disableenable_0].tagName=='TEXTAREA'){
    disableenable_obj.ary[disableenable_obj.ary.length]=disableenable_clds[disableenable_0];
   }
  }
 }
 for (disableenable_1=0;disableenable_1<disableenable_obj.ary.length;disableenable_1++){
 	if (formvalue== "image_gallery"||formvalue== "pages"){ 
 	 disableenable_obj.ary[disableenable_1].removeAttribute('disabled');
	}else{
		disableenable_obj.ary[disableenable_1].setAttribute('disabled','disabled');
	}
 }
 if (disableenable_obj.checked==disableenable_state){
  for (disableenable_2=0;disableenable_2<disableenable_obj.ary.length;disableenable_2++){
  	if (formvalue== "image_gallery"||formvalue== "pages"){ 
    	disableenable_obj.ary[disableenable_2].setAttribute('disabled','disabled');
	}else{
		disableenable_obj.ary[disableenable_2].setAttribute('disabled','disabled');
	}
  }
 }
 disableenable_obj.removeAttribute('disabled');

}

function disableenable_AllElements(disableenable_){
  if (disableenable_.all){ return disableenable_.all; }
  return disableenable_.getElementsByTagName('*');
}
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}



//SWAP IMAGES ON ROLLOVER
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


//SHOW/HIDE DIV LAYERS
function toggleLayer(whichLayer,numberpages){
	if (document.getElementById){
		// this is the way the standards work
		var layernumber2=1;
	    for (layernumber=0;layernumber<numberpages;layernumber++){
			var currentLayer =('page' + layernumber2);			
			var style1 = document.getElementById(currentLayer).style;
			if (layernumber2==whichLayer){
				style1.display = style1.display="block";
			}else{
				style1.display = style1.display="none";
			}
			layernumber2++;
		}	
	}
	else if (document.all)
	{
		// this is the way old msie versions work
		var layernumber2=1;
	    for (layernumber=0;layernumber<numberpages;layernumber++){
			var currentLayer =('page' + layernumber2);			
			var style1 = document.all[currentLayer].style;
			if (layernumber2==whichLayer){
				style1.display = style1.display="block";
			}else{
				style1.display = style1.display="none";
			}
			layernumber2++;
		}	
	}
	else if (document.layers)
	{
		// this is the way nn4 works
		var layernumber2=1;
	    for (layernumber=0;layernumber<numberpages;layernumber++){
			var currentLayer =('page' + layernumber2);			
			var style1 = document.layers[whichLayer].style;
			if (layernumber2==whichLayer){
				style1.display = style1.display="block";
			}else{
				style1.display = style1.display="none";
			}
			layernumber2++;
		}	
	}
	getcontent_height();
}

//SHOW/HIDE DIV LAYERS - Turn on and off one div
function toggleLayerSingle(whichLayer,numberpages){
	if (document.getElementById){
		// this is the way the standards work
		var style2 = document.getElementById(whichLayer).style;
	}
	else if (document.all)
	{
		// this is the way old msie versions work
		var style2 = document.all[whichLayer].style;
	}
	else if (document.layers)
	{
		// this is the way nn4 works
		var style2 = document.layers[whichLayer].style;
	}
	if (style2.display == "block"){setting="none";}else{setting="block";}
	style2.display = style2.display=setting;
}

//Validate Forms
<!--
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->



// Copyright © 2000 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.
//
// ************************
// layer utility routines *
// ************************

function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
	// W3C DOM
	return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
	// MSIE 4 DOM
	return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
	// NN 4 DOM.. note: this won't find nested layers
	return document.layers[objectId];
    } else {
	return false;
    }
} // getStyleObject

function changeObjectVisibility(objectId, newVisibility) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.visibility = newVisibility;
	return true;
    } else {
	// we couldn't find the object, so we can't change its visibility
	return false;
    }
} // changeObjectVisibility

function moveObject(objectId, newXCoordinate, newYCoordinate) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.left = newXCoordinate;
	styleObject.top = newYCoordinate;
	return true;
    } else {
	// we couldn't find the object, so we can't very well move it
	return false;
    }
} // moveObject



// Copyright © 2000 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.
// ********************************
// application-specific functions *
// ********************************

// store variables to control where the popup will appear relative to the cursor position
// positive numbers are below and to the right of the cursor, negative numbers are above and to the left
var xOffset = 30;
var yOffset = -5;

function showPopup (targetObjectId, eventObj) {
    if(eventObj) {
	// hide any currently-visible popups
	hideCurrentPopup();
	// stop event from bubbling up any farther
	eventObj.cancelBubble = true;
	// move popup div to current cursor position 
	// (add scrollTop to account for scrolling for IE)
	var newXCoordinate = (eventObj.pageX)?eventObj.pageX + xOffset:eventObj.x + xOffset + ((document.body.scrollLeft)?document.body.scrollLeft:0);
	var newYCoordinate = (eventObj.pageY)?eventObj.pageY + yOffset:eventObj.y + yOffset + ((document.body.scrollTop)?document.body.scrollTop:0);
	moveObject(targetObjectId, newXCoordinate, newYCoordinate);
	// and make it visible
	if( changeObjectVisibility(targetObjectId, 'visible') ) {
	    // if we successfully showed the popup
	    // store its Id on a globally-accessible object
	    window.currentlyVisiblePopup = targetObjectId;
	    return true;
	} else {
	    // we couldn't show the popup, boo hoo!
	    return false;
	}
    } else {
	// there was no event object, so we won't be able to position anything, so give up
	return false;
    }
} // showPopup

function hideCurrentPopup() {
    // note: we've stored the currently-visible popup on the global object window.currentlyVisiblePopup
    if(window.currentlyVisiblePopup) {
	changeObjectVisibility(window.currentlyVisiblePopup, 'hidden');
	window.currentlyVisiblePopup = false;
    }
} // hideCurrentPopup



// ***********************
// hacks and workarounds *
// ***********************

// initialize hacks whenever the page loads
window.onload = initializeHacks;

// setup an event handler to hide popups for generic clicks on the document
document.onclick = hideCurrentPopup;

function initializeHacks() {
    // this ugly little hack resizes a blank div to make sure you can click
    // anywhere in the window for Mac MSIE 5
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
	&& (navigator.platform.indexOf('Mac') != -1)
	&& getStyleObject('blankDiv')) {
	window.onresize = explorerMacResizeFix;
    }
    resizeBlankDiv();
    // this next function creates a placeholder object for older browsers
    createFakeEventObj();
}

function createFakeEventObj() {
    // create a fake event object for older browsers to avoid errors in function call
    // when we need to pass the event object to functions
    if (!window.event) {
	window.event = false;
    }
} // createFakeEventObj

function resizeBlankDiv() {
    // resize blank placeholder div so IE 5 on mac will get all clicks in window
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
	&& (navigator.platform.indexOf('Mac') != -1)
	&& getStyleObject('blankDiv')) {
	getStyleObject('blankDiv').width = document.body.clientWidth - 20;
	getStyleObject('blankDiv').height = document.body.clientHeight - 20;
    }
}

function explorerMacResizeFix () {
    location.reload(false);
}
//*******************************************************************************************
//Drop Down Menu
//*******************************************************************************************

var isIE = document.all;
var indexes = 10000;
var menuTimeout = 100;
var currentMenu;
var currentID;
var isHTTPS = window.location.protocol.toLowerCase().indexOf('https')>=0;

function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) 
  {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1) 
      return element;

    elements.push(element);
  }

}

var mouseX, mouseY;

function GoTo(url)
{
    if (isIE)
        window.navigate(url);
    else
        window.location = url;
        
    status = 'Loading...';
}
function getMousePos(e)
{
	if (!e)
		var e = window.event||window.Event;
	
	if(typeof e.pageX != 'undefined'){
		mouseX = e.pageX;
		mouseY = e.pageY;
	} else {
	    if (document.body)
	    {
		    mouseX = e.clientX + document.body.scrollLeft;
		    mouseY = e.clientY + document.body.scrollTop;
		}
	}
}

// tell Mozilla to start listening
// obsolete?
//if(window.Event && document.captureEvents)
//	document.captureEvents(Event.MOUSEMOVE);

// Then assign the mouse handler
// Assign the mouse handler
if (document.attachEvent)
{
    document.attachEvent("onmousemove", function() { getMousePos(event); } );
}
else
{
    window.addEventListener("mousemove", function(e) { getMousePos(e); }, false );
}
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		curleft += obj.x;
    }
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	{
		curtop += obj.y;
    }
	return curtop;
}

MenuItem = function(UniqueID, Parent, text, offStyle, overStyle, childOffStyle, childOverStyle)
{
   
    this.Parent = Parent;
    this.ID = UniqueID;
    this.IsMouseOver = false;
    this.Open = false;
    this.Children = new Array();
    this.Initialised = false;
    this.Text = text;
    this.OffStyle = offStyle?offStyle:null;
    this.OverStyle = overStyle?overStyle:null;
    this.ChildOverStyle = childOverStyle?childOverStyle:"background-color: #CCCCCC";
    this.ChildOffStyle = childOffStyle?childOffStyle:"background-color: #FFFFFF";
    this.Init();
}

MenuItem.prototype.Find = function(childID)
{
    if (this.ID==childID)
        return this;
        
    var o = null;
    for(var i=0;i<this.Children.length;i++)
    {
       
        /*if (this.Children[i].ID==childID)
        { 
            o = this.Children[i];
            break;
        }*/
        o = this.Children[i].Find(childID);
        if (o)
        break;
    }   
    return o;
}

MenuItem.prototype.HasOpenChildren = function()
{
    var res = false;
    for(var i=0;i<this.Children.length;i++)
    {
        if(this.Children[i].Open)
            return true;
        
        res = this.Children[i].HasOpenChildren();
        if (res)
        break;
    }
    return res;
}

MenuItem.prototype.Add = function(childID, Parent, text)
{
    for(var i=0;i<this.Children.length;i++)
    {
        if (this.Children[i].ID==childID)
        return;
    }   
    var o = new MenuItem(childID, Parent, text, 
    this.OffStyle,
    this.OverStyle, 
    this.ChildOffStyle,
    this.ChildOverStyle
    );

    this.Children.push(o);
    
}

MenuItem.prototype.Contains = function(childID)
{
    for(var i=0;i<this.Children.length;i++)
    {
        if (this.Children[i].ID==childID)
        return true;
    }   
    return false;
}

MenuItem.prototype.Init = function()
{

    if (this.Initialised || !$("mnu"+this.ID))
        return;
        
   this.Initialised = true;
        
	if (!$("holder"+this.ID))
	{
	    $("menuHolder").innerHTML += "<span id=\"holder"+this.ID+"\"></span>";
	}	
	
	if (!$("mnuLayer"+this.ID))
	{
	
	    var s = "<div id=\"mnuLayer"+this.ID+"\" style=\"position: absolute; display: none; cursor: pointer;\" onmousemove=\"SetMouseOver("+this.ID+",1);\" onmouseout=\"SetMouseOver("+this.ID+",0);setTimeout('KillMenu("+this.ID+")', "+menuTimeout+");\">";
	    s += "<table cellpadding=\"0\" cellspacing=\"0\"  class=\"submenu\" border=\"1\" onmouseover=\"SetMouseOver("+this.ID+",1);\" onmouseout=\"SetMouseOver("+this.ID+",0);setTimeout('KillMenu("+this.ID+")', "+menuTimeout+");\" style=\"border-collapse: collapse;\" borderColor=\"#CCCCCC\">";
	    var items = $("mnu"+this.ID).value.split('~');
	    var cols = parseInt(items.length/15)+1;

	    for(var i=0;i<items.length;i++)
	    {
		    var vals = items[i].split('|');
		    this.Add(parseInt(vals[0]), this, vals[1]);
    		
		    if (cols>1)
		    {
		        if ((i % cols)==0||i==0)
		        {

		            if (i>0)
		                s += "</tr>";
		            s += "<tr>";
		        }
		    }
		    else
		        s += "<tr>";
    		  
//	        var evts = "onmousemove=\"FlyOut("+vals[0]+");\" onmouseout=\"setTimeout('KillMenu("+vals[0]+");', "+menuTimeout+");\"";
//            var evts = "onmousemove=\"FlyOut("+vals[0]+");\" onmouseout=\"setTimeout('KillSubMenu("+vals[0]+");',50);\"";  		
            
            var evts = "onmousemove=\"FlyOut('"+vals[0]+"');\" ";
            
            if (isIE)
                evts += "onmouseout=\"setTimeout('KillSubMenu("+vals[0]+");',50);\"";
            else
                evts += "onmouseout=\"setTimeout('KillSubMenu("+vals[0]+");',50);\"";
    		  
		    s += "<td "+evts+">";
    		
		    s += "<table id=\"td"+vals[0]+"\" onclick=\"GoTo('"+vals[2]+"');\"  width=\"100%\" cellpadding=\"4\" cellspacing=\"0\" border=\"0\" class=\"submenu\"><tr onmouseover=\"this.className='submenu_over'\" onmouseout=\"this.className='submenu'\"><td nowrap align=\"left\">";
		    s += vals[1];
		    s += "</td><td align=\"right\">";
		    if($("mnu"+vals[0]))
		        s += "<img src=\"images/menu-glyph.gif\" width=\"4\" height=\"7\"/>";
		    s += "</td></tr></table>";
		    s += "</td></td>";
    		
		    if (cols==1)
		    {
		        s += "</tr>"
		    }
    		
	    }
	    s += "</table>";
	    s += "</div>"
    	
	    if (isIE)
    	    s += "<iframe id=\"mnuLayer"+this.ID+"_Fix\" src=\"/blank.htm\" scrolling='no' frameborder='0' style='position:absolute; top:0px; left:0px; display:none; filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);'></iframe>"; //
         
         
	  
	    $("holder"+this.ID).innerHTML = s;
	}
	
}
MenuItem.prototype.Render = function()
{
    if (this.Open)
        return;
    
    var obj = $("td"+this.ID);
    
    if (isIE)
        obj.style.backgroundColor = '#CCCCCC'; // ie7 seems to require something before setting cssText
    
    if (this.Parent)
       obj.style.cssText = this.ChildOverStyle;
    else
       obj.style.cssText = this.OverStyle;
        
    this.Open = true;
        
    if (!$("mnu"+this.ID))
        return;
    
   
    var winW = (!isIE)? window.innerWidth-16 : document.body.offsetWidth-20
    var winH = (!isIE)? window.innerHeight-16 : document.body.offsetHeight-20
        
    var layer = $("mnuLayer"+this.ID);
    //offset the menu to the left or right (+70)
	layer.style.top = findPosY($("td"+this.ID))+ (this.Parent ? 0 :$("td"+this.ID).offsetHeight)+ "px";
	layer.style.left = findPosX($("td"+this.ID))+ (this.Parent? $("td"+this.ID).offsetWidth+1 :0) + "px";
	layer.style.display = 'block';
	indexes++;
	layer.style.zIndex  = indexes;
	var layX = parseInt(layer.style.left.replace('px',''));
	
	var layW = (!isIE)? layer.clientWidth : layer.offsetWidth-20;
    var layH = (!isIE)? layer.clientHeight : layer.offsetHeight-20;
    
	//Log("winW: "+winW+", layX: "+layX+", layW: "+layW);
    if (winW<=(layX+layW)-10)
       layer.style.left = (this.Parent? findPosX(obj)-layW : (winW-(layW+10))) + "px";
    
    var ieFixLayer = $("mnuLayer"+this.ID+"_Fix");
    if (isIE &&  ieFixLayer)
    {
        indexes++;
        layer.style.zIndex  = indexes;
        ieFixLayer.style.width = layer.offsetWidth;
        ieFixLayer.style.height = layer.offsetHeight;
        ieFixLayer.style.top = layer.style.top;
        ieFixLayer.style.left = layer.style.left;
        ieFixLayer.style.zIndex = layer.style.zIndex - 1;
        ieFixLayer.style.position = "absolute";
        ieFixLayer.style.display = "block";
    }
    
}

MenuItem.prototype.Close = function()
{
    //status = 'Closing '+this.ID;
    if (this.IsMouseOver || this.HasOpenChildren())
        return;
    var obj = $("td"+this.ID);
    if (obj)
    {
        if (this.Parent)
            obj.style.backgroundColor = '#FFFFFF'; // ie7 seems to require something before setting cssText

        obj.style.cssText = this.Parent?this.ChildOffStyle:this.OffStyle;
    }    
       
    this.Open = false;
    
    var ieFixLayer = $("mnuLayer"+this.ID);
    if (ieFixLayer)
    {
        var comboFix = $("mnuLayer"+this.ID+"_Fix");

        ieFixLayer.style.display = 'none';
        if (comboFix)
            comboFix.style.display = 'none';
    }   
    
    if (this.Parent)
        this.Parent.Close();

}
MenuItem.prototype.CloseRecursive = function()
{
    if (this.IsMouseOver)
        return;
        
    this.Close();
    
    if (this.Parent)
        this.Parent.CloseRecursive();
        
}

function SetMouseOver(menuid, over)
{
    var o = currentMenu.Find(menuid);
    if (!o)
    return;
    o.IsMouseOver = over;
}

function FlyOut(menuid)
{
    //status = 'FlyOut '+menuid+' '+(new Date()).toString();
    var o = currentMenu.Find(menuid);
    o.Render();
   
}

function IsMouseOver(object)
{
    if (!$(object))
        return false;
    
    var x = findPosX( $(object));
    var y = findPosY( $(object));
    var width = $(object).offsetWidth;
    var height =  $(object).offsetHeight;
    
    return (mouseX >= x && mouseX <=(x+width)
        && mouseY >= y && mouseY <= (y+height));
    
}
function KillSubMenu(menuid)
{
    //if (IsMouseOver("td"+menuid))
    //    return;
    if ((currentMenu.ID==menuid))
    return;

    var o = currentMenu.Find(menuid);
    if (!o)
        return;
    if (o.HasOpenChildren())
        return;
    o.Close();
   
}

function KillMenu(menuid,isroot)
{
  
    if ((currentMenu.ID==menuid && !isroot)
        || IsMouseOver("td"+menuid))
    return;

    
    var o = currentMenu.Find(menuid);
    if (!o)
        return;
    if (o.HasOpenChildren())
        return;
    o.Close();
   
}

function ClearAll()
{

    currentMenu = null;
    $("menuHolder").innerHTML = "";
}
function OpenMenu(menuid,offStyle,overStyle,childOffStyle,childOverStyle)
{

    if (currentMenu 
        && currentMenu.ID==menuid)
    {
        currentMenu.Render();
        return;
    }
	
	if (currentMenu!=null)
	    currentMenu.Close();
	
	ClearAll();
	
	if ($('td'+menuid).style)
	{
	    if (!offStyle)
	        offStyle = $('td'+menuid).style.cssText;
	    if (!overStyle)
	        overStyle = offStyle;
	}
	
	currentMenu = new MenuItem(menuid, null, null, 
	offStyle, 
	overStyle, 
	childOffStyle,
	childOverStyle);
	
	//currentMenu.Init();
    currentMenu.Render();

}

//******************************END OF DROP DOWN MENU**********************