/* array of menu names as 'menu_' + array key value */
var ddmenus = Array ('maps','directions','stores','restaurants','events','residences','officespace','giftcards','about');

/* where should the menu be displayed on the yaxis */
var yPos = 132;

/* page controls */
var timeon = null

/* hide menus when document is rolled over */
document.onmouseover = hideall;

/* init error */
window.onerror = null;

/* detect browser */
var browser = navigator.appName;
var b_version = navigator.appVersion;
var b_agent = navigator.userAgent;
var version = parseFloat(b_version);

/* hides all menus */
function hideall() 
{
	for(i=0; i<ddmenus.length; i++) {
		swapview('menu_' + ddmenus[i], 'hidden');
	} 
	MM_swapImgRestore();
}

/* menu item/obj rollover */
function over() 
{ 
	clearTimeout(timeon);
}

/* roll out of object */
function out() 
{
	/* not really using this */
	timeon = setTimeout("hideall()", 500);
}

/* show a menu */
function show(id,obj) 
{
	if (obj) {
		hideall();
		obj.cancelBubble=true;
		var menuID = "menu_" + id;
		
		if (browser=="Microsoft Internet Explorer"||b_agent.indexOf('Safari')!=-1) {
			move (menuID,"nav_"+id,0);
		} else {
			move (menuID,"nav_"+id,1);
		}
		
		//changeOpac(0,menuID);
		if (swapview(menuID,'visible')) {
			//opacity(menuID,0,100,200);
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
} // show

/* hide a menu */
function hide(id,obj) 
{
	if (obj) {
		obj.cancelBubble = true;
		var menuID = "menu_" + id;
		if (swapview (menuID,'hidden')) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	} 
} // hide

/* find specifed objects left offset */
function getleft(ele,xo) 
{ 
	var elem = MM_findObj(ele);
	xPos     = elem.offsetLeft; 
	tempEl   = elem.offsetParent; 
	while (tempEl != null) { 
		xPos  += tempEl.offsetLeft; 
		tempEl = tempEl.offsetParent; 
	} 
	return xPos+xo;
} // getleft

/* find specifed objects top offset */
function gettop(ele) 
{
	var elem = MM_findObj(ele);
	var yPos = elem.offsetTop;
	tempEl = elem.offsetParent;
	while (tempEl != null) {
		yPos  += tempEl.offsetTop;
		tempEl = tempEl.offsetParent;
	}
	return yPos;
} // gettop

/* cross-browser function to get an object's style object given its id */
function getStyleObject(obj) 
{
	if(document.getElementById && document.getElementById(obj)) {
		// W3C DOM
		return document.getElementById(obj).style;
	} else if (document.all && document.all(obj)) {
		// MSIE 4 DOM
		return document.all(obj).style;
	} else if (document.layers && document.layers[obj]) {
		// NN 4 DOM.. note: this won't find nested layers
		return document.layers[obj];
	} else {
		return false;
	}
} // getStyleObject

/* move a menu this is currently customized to make "drop-ups" instead of "drop-downs" */
function move(obj,offset,xo) 
{
  var styleObject = getStyleObject(obj);
  if(styleObject) {
	  	// find object's height
		var menuObj = MM_findObj(obj);
		var menuHeight = menuObj.offsetHeight;
		// move object to relative position
		styleObject.left = getleft(offset,xo);
		styleObject.top  = yPos ; // - menuHeight;
		return true;
  } else {
		// we couldn't find the object, so we can't very well move it
		return false;
  }
} // move

/* sets a found object's visibilty */
function swapview(obj,val) 
{
	var styleObject = getStyleObject(obj);
	if (styleObject) {
		styleObject.visibility = val;
		return true;
	} else {
		return false;
	}
} // swapview

/* macromedia custom image rollover function */
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];}}
}

/* macromedia custom image rollover function */
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;
}

/* macromedia custom image rollover function */
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;
}

/* macromedia custom image rollover function */
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];}
}

/* animate opacity */
function opacity(id,opacStart,opacEnd,millisec) 
{
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;
    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

/* change the opacity for different browsers */
function changeOpac(opacity,id) 
{
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
} 

/* writes a flash object for IE 7/Windows sp2 fuckup */
function flashobj (id,mv,w,h,bg) {
	var flash = "";
	flash += '<object id="'+id+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="'+w+'" height="'+h+'">';
	flash += '<param name="movie" value="flash/'+mv+'" />';
	flash += '<param name="quality" value="high" />';
	flash += '<embed src="flash/'+mv+'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+w+'" height="'+h+'"></embed>';
	flash += '</object>';
	document.write(flash);
}

/* a whole bunch of random cross browser handling tricks and hacks follows */

// initialize hacks whenever the page loads
window.onload = initializeHacks;

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);
}