/*
 * Menu script
 *
 * @package Dunnblue
 * @author Onehouse.net, Dunn Blue Reprographics
 * @version 2006.04.12
 */

// ---[ IMAGE PRELOADING AND SWAPING SCRIPTS ]----------------------------------------------
function createImage( imgRef )
{
    var img = new Image() ;
    img.src = imgRef ;
		return img ;
}

var imgDir = "_lib/img/" ;
var btnServices				= 	createImage(imgDir + "btn_services_innactive.gif");
var btnServicesOver 	= 	createImage(imgDir + "btn_services_innactive_over.gif");
var btnAbout 					= 	createImage(imgDir + "btn_about_innactive.gif");
var btnAboutOver 			=	 	createImage(imgDir + "btn_about_innactive_over.gif");
var btnOrderInfo 			= 	createImage(imgDir + "btn_order_innactive.gif");
var btnOrderInfoOver 	= 	createImage(imgDir + "btn_order_innactive_over.gif");
var btnSupport 				= 	createImage(imgDir + "btn_support_innactive.gif");
var btnSupportOver 		= 	createImage(imgDir + "btn_support_innactive_over.gif");
var btnContact 				= 	createImage(imgDir + "btn_contact_innactive.gif");
var btnContactOver 		= 	createImage(imgDir + "btn_contact_innactive_over.gif");
var btnHome 					= 	createImage(imgDir + "btn_home_innactive.gif");
var btnHomeOver 			= 	createImage(imgDir + "btn_home_innactive_over.gif");

/*function swapImage ()
{ // (ImgId, NewImgName)
	var args = swapImage.arguments ;
	for ( i = 0 ; i < args.length ; i = i + 2 )
	{
		document[args[i]].src = eval(args[i+1] + ".src") ;
	}
}*/

function swapImage ( imgId , newImgName )
{

		document[imgId].src = eval(newImgName + ".src") ;

}

// Browser detection

var IEX = (document.all) ? 1 : 0;
var N4 = (document.layers) ? 1 : 0;
var N6 = (document.getElementById && !document.all) ? 1 : 0;
var oldIE = (document.all && !document.getElementById) ? 1 : 0;

// Platform detection

var MAC = (navigator.userAgent.indexOf("Mac") != -1) ? true : false ;

// Find object's DOM reference

function findDomObjRef ( objectId , withStyle )
{
	var addStyle = ( withStyle == 1 ) ? '.style' : '' ;
	if ( addStyle == '' )
	{
		if ( oldIE )
		{
			return document.all[ objectId ] ;
		}
		else
		{
			return document.getElementById( objectId ) ;
		}
	}
	else
	{
		if ( oldIE )
		{
			return document.all[ objectId ].style ;
		}
		else
		{
			return document.getElementById( objectId ).style ;
		}
	}
}

// Show and hide layers

function showHideLayer( layerId , showHide )
{
	var layerRef = findDomObjRef( layerId , 1 ) ;
	var showHideVar = ( showHide == 0 ) ? "hidden" : "visible" ;
	layerRef.visibility = showHideVar ;
}

// GET INLINE, NONPOSITIONED ELEMENT'S POSITION ON PAGE
function getElementPosition( elemId )
{
	// Auth: Danny Goodman - JavaScript & DHTML Cookbook
	var offsetTrail = findDomObjRef( elemId ); //  document.getElementById(elemId)  document.all[elemId]
	var offsetLeft = 0;
	var offsetTop = 0;
	while ( offsetTrail )
	{
		offsetLeft += offsetTrail.offsetLeft;
		offsetTop += offsetTrail.offsetTop;
		offsetTrail = offsetTrail.offsetParent;
	}
	if ( MAC && typeof document.body.leftMargin != "undefined" )
	{
		offsetLeft += document.body.LeftMargin;
		offsetTop += document.body.topMargin;
	}
	return {left:offsetLeft, top:offsetTop};
}

function getObjDimension( objectId , dimParam )
{
	var objRef = findDomObjRef( objectId ) ;
	var obj = getElementPosition( objectId ) ;

	switch ( dimParam )
	{
		case 'top' :		return obj.top ;
		case 'left' :		return obj.left ;
		case 'width' :	return objRef.offsetWidth ;
		case 'height' :	return objRef.offsetHeight ;
		case 'right' :	return obj.left + objRef.offsetWidth ;
		case 'bottom' :	return obj.top + objRef.offsetHeight ;
	}
	return false ;
}

function showMenu( menuID , srcElemID , pos )
{
	if ( !menuID )
	{
		menuID = this.id ;
	}

	try
	{
		var timeoutRef = eval( menuID + 'Timeout' ) ;

		if ( timeoutRef )
		{
			window.clearTimeout( timeoutRef ) ;
			timeoutRef = false ;
		}
	}
	catch ( exception )
	{
	}

	if ( srcElemID )
	{
		var srcElemTop = parseInt(getObjDimension(srcElemID, "top"));
		var srcElemBottom = parseInt(getObjDimension(srcElemID, "bottom"));
		var srcElemBottomAdj = srcElemBottom - 6;
		var srcElemLeft = parseInt(getObjDimension(srcElemID, "left"));
		var srcElemRight = parseInt(getObjDimension(srcElemID, "right"));
		var srcElemHeight = parseInt(getObjDimension(srcElemID, "height"));
		var srcElemWidth = parseInt(getObjDimension(srcElemID, "width"));
		var menuWidth = parseInt(getObjDimension(menuID, "width"));

		if ( !pos )
		{
			pos = "bottomLeft" ;
		}

		switch ( pos )
		{
			case "bottomLeft":
				var menuTop = srcElemBottomAdj;
				var menuLeft = srcElemLeft;
				break;
			case "bottomRight":
				var menuTop = srcElemBottomAdj;
				var menuLeft = srcElemRight - menuWidth;
				break;
			case "rightTop":
				//var menuTop = srcElemTop;
				var menuTop = srcElemTop + 7;
				var menuLeft = srcElemRight - 7;
				//var menuLeft = srcElemRight + 1;
				break;
			case "rightBottom":
				var menuTop = srcElemBottom - srcElemHeight;
				var menuLeft = srcElemRight;
				break;
			case "topLeft":
				var menuTop = srcElemTop - srcElemHeight;
				var menuLeft = srcElemLeft;
				break;
			case "topRight":
				var menuTop = srcElemTop - srcElemHeight;
				var menuLeft = srcElemRight - srcElemWidth;
				break;
			case "leftTop":
				var menuLeft = srcElemLeft - srcElemWidth;
				var menuTop = srcElemTop;
				break;
			case "leftBottom":
				var menuLeft = srcElemLeft - srcElemWidth;
				var menuTop = srcElemBottom - srcElemHeight;
				break;
			case "bottomCenter":
				var menuTop = srcElemBottomAdj;
				var menuLeft = srcElemLeft - ( ( menuWidth - srcElemWidth ) / 2 );
				break;
		}

		var menuRef = findDomObjRef( menuID , 1 ) ;
		var units = ( typeof menuRef.left == "string" ) ? "px" : 0 ;
		menuRef.left = menuLeft + units ;
		menuRef.top = menuTop + units ;
		showHideLayer ( menuID , 1 ) ;
	}
}

function hideTimeout( menuID )
{
	if ( !menuID )
	{
		menuID = this.id ;
	}
	var timerId = menuID + "Timeout";
	var hideFunction = "hideMenu('" + menuID + "')";
	eval("window." + timerId + "= setTimeout(hideFunction, 20)");
}

function hideMenu( menuID )
{
	showHideLayer (menuID, 0);
	var menuRef = findDomObjRef (menuID, 1);
	menuRef.left = -1000;
	menuRef.top = -1000;
}