/* * * * * * * * * * * * * * * * * * * * * * * */
/* *  Javascript for Agate Cove Web Site * */
/* *            Printed: 02/27/05                 * */
/* * * * * * * * * * * * * * * * * * * * * * * */

/* * * * * * * * * * * * */
/*   DropDown Menus   */
/* * * * * * * * * * * * */
var objNavMenu          = null;
var objLowMenu          = null;
var objFootMenu         = null;
var objDropMenu         = null;
var lastObjNavMenu   = null;
var lastObjDropMenu  = null;
var deferredID           = null;
var deferredDelay       = 200;
var numDropMenu        = 10;
var footMenuOn           = false;
var footY                     = new Array();
/*  Link Styles */
var linkColor       = '#000000'
var bgLinkColor   = '#66CCCC';
var linkHover      = '#330099'
var bgLinkHover  = '#99FFFF'
var linkActive      = '#330099'
var bgLinkActive  = '#99FFFF'
			
var isIE = null;
if (navigator.appName.indexOf('Microsoft Internet Explorer') != -1) isIE=1;

function initDropMenu () 
{
	/* global handler to put menus away when they click off the menu on the page */
	document.onclick = DeferredMenuOff;
	/* Hide the drop menus, and set event handlers for nav menus. */
	for (i=0; i<numDropMenu; i++) 
	{
		menuName                            = 'dropMenu' + i;
		objDropMenu                       = document.getElementById(menuName);
		objDropMenu.style.visibility = 'hidden';
		objDropMenu.onmouseover    = clearDeferralTimer;
		objDropMenu.onmouseout      = startDeferralTimer;
		
		footName                            = 'footMenu' + i;
		objFootMenu                       = document.getElementById(footName);
		objFootMenu.style.visibility = 'hidden';
		objFootMenu.onmouseover    = clearDeferralTimer;
		objFootMenu.onmouseout      = startDeferralTimer;
		
		navName                          	  = 'navMenu' + i;
		objNavMenu                        = document.getElementById(navName);
		objNavMenu.onmouseover     = MenuOn;
		objNavMenu.onmouseout       = MenuOff;
		objNavMenu.onclick             = null;
		
		lowName                              = 'lowMenu' + i;
		objLowMenu                         = document.getElementById(lowName);
		objLowMenu.onmouseover      = FootMenuOn;
		objLowMenu.onmouseout        = FootMenuOff;
		objLowMenu.onclick              = null;
		
		/* initialize this to show it hasn't been set yet */
		footY[i] = -1;
	}
	objDropMenu = null;
	objNavMenu   = null;
	objFootMenu  = null;
	objLowMenu   = null;
	return;
}

function clearDeferralTimer(ignore)
{
	clearTimeout(document.xtimer);
}

function startDeferralTimer(ignore)
{
	document.xtimer = setTimeout('DeferredMenuOff()', deferredDelay);
}

function MenuOff (e) 
{
	deferredID = this.id;
	startDeferralTimer();
}
			
function FootMenuOff (e) 
{
	deferredID = this.id;
	startDeferralTimer();
}
			
function DeferredMenuOff () 
{
	if (deferredID)
	{
		clearDeferralTimer();
		hideDropMenu();
		document.onclick = DeferredMenuOff;
		outObjNavMenu = document.getElementById(deferredID);
		if (outObjNavMenu != objNavMenu) 
		{
			outObjNavMenu.style.color                  = linkColor;
			outObjNavMenu.style.backgroundColor = bgLinkColor;
		}
		deferredID  = null;
		footMenuOn = false;
	}
}
			
function  MenuOn(e) 
{
	DeferredMenuOff();
	document.onclick = DeferredMenuOff;
	hoverObjNavMenu = document.getElementById(this.id);
	if (hoverObjNavMenu != objNavMenu) 
	{
		hoverObjNavMenu.style.color                  = linkHover;
		hoverObjNavMenu.style.backgroundColor = bgLinkHover;
	}
	/* Pass these values along to showDropMenu, which is no longer an event handler. */
	tid     = this.id;
	tlen    = tid.length;
	idnum = tid.substring(tlen-1,tlen);
	showDropMenu(tid,idnum);
}

function  FootMenuOn(e) 
{
	DeferredMenuOff();
	footMenuOn = true;
	document.onclick = DeferredMenuOff;
	hoverObjNavMenu = document.getElementById(this.id);
	if (hoverObjNavMenu != objNavMenu) 
	{
		hoverObjNavMenu.style.color                  = linkHover;
		hoverObjNavMenu.style.backgroundColor = bgLinkHover;
	}
	/* Pass these values along to showDropMenu, which is no longer an event handler. */
	tid     = this.id;
	tlen    = tid.length;
	idnum = tid.substring(tlen-1,tlen);
	showDropMenu(tid,idnum);
}

function showDropMenu(tid,num) 
{
	clearDeferralTimer();
	if (footMenuOn)
	{
		menuName = 'footMenu' + num;
	}
	else
	{
		menuName = 'dropMenu' + num;
	}
	objDropMenu = document.getElementById(menuName);
	objNavMenu  = document.getElementById(tid);
	if ((lastObjNavMenu != objNavMenu ) || (lastObjDropMenu == null)) 
	{
		objNavMenu.style.color                  = linkActive;
		objNavMenu.style.backgroundColor = bgLinkActive;
	}
				
	if (objDropMenu) 
	{
		if (footMenuOn)
		{
			/* go upward from the top-left corner */
			xPos = objNavMenu.offsetLeft;
			/* footY is a hack to cache the heights. After the first time, they came back zero, */
			/* so I had to cache the heights on the first reference.. */
			if (footY[num] == -1)
			{
				yPos = objNavMenu.offsetTop - objDropMenu.offsetHeight;
				footY[num] = yPos;
			}
			else
			{
				yPos = footY[num];
			}
		}
		else
		{
			/* go right from the top-right corner */
			xPos = objNavMenu.offsetLeft + objNavMenu.offsetWidth;
			yPos = objNavMenu.offsetParent.offsetTop + objNavMenu.offsetTop;
		}
		/*  minor adjustments */
		if (isIE) 
		{
			yPos += 0;
			xPos -= 0
		}
		else
		{
			yPos += 0;
			if (footMenuOn)
			{
				xPos -= 0;
			}
			else
			{
				xPos -= 4;
			}
		}
		objDropMenu.style.left = xPos + 'px';
		objDropMenu.style.top  = yPos + 'px';
		objDropMenu.style.visibility = 'visible';
		
		lastObjDropMenu         = objDropMenu;
		lastObjNavMenu           = objNavMenu;
	}
}

function hideDropMenu(ignore) 
{
	document.onclick = null;
	if (lastObjDropMenu) 
	{
		lastObjDropMenu.style.visibility          = 'hidden';
		lastObjDropMenu                                = null;

		lastObjNavMenu.style.color                  = linkColor;
		lastObjNavMenu.style.backgroundColor = bgLinkColor;
	}
	objNavMenu = null;
}


/* * * * * * * * * * * * */
/* Dreamweaver stuff */
/* * * * * * * * * * * * */
function MM_preloadImages()
{
  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];
			}
	}
}

/* Swap and Unswap change the 'src' property of the image objects. */
/* They cache the current version when highlighting or selecting an entry*/

function DFF_Swap(swap_id,swap_pn) 
{
	/* Swap out the image with the new one, caching the old pn for unswap.*/
  	var x; 
  	var seldoc = document.selectedID;
  	if ((seldoc == null) || (seldoc != swap_id))
  	{
		x=findImageObject(swap_id);
		if (x!=null)
    	  	{
			  document.DFF_CachePix=x; 
			  document.DFF_CacheID=swap_id; 
		      if(!x.AltSrc) x.AltSrc=x.src; 
	    	  x.src=swap_pn;
  		  	}
  	}
}

function DFF_Unswap() 
{
  	var id=document.DFF_CacheID; 
  	if ((id == null) || (id != document.selectedID))
  		{
  		   var x=document.DFF_CachePix;
		   if (x)
  			  {
  	 			x.src=x.AltSrc;
			  }
		}
}

function findImageObject(objectID) 
{
	var mobject = document.getElementById(objectID);
	return mobject;
}
