// All code and designs are Copyright © 2006 Blackburst Media, Inc. All rights reserved.
// No reproduction, copying, transmittal, etc. without the express written consent of the author and reference to this message.
//
// menu.js
//
// Menu and Button handlers for a nice menu system.
//

function GuessBrowser ()
{
	var ua, s, i;
	
	this.isIE    = false;  // Internet Explorer
	this.isOP    = false;  // Opera
	this.isNS    = false;  // Netscape
	this.browser = "";
	this.version = null;
	this.isMac = navigator.appVersion.indexOf("Mac") >= 0;
	this.dhtmlCompliant = document.getElementById != null;

	ua = navigator.userAgent;
	s = "Opera";
	if ((i = ua.indexOf(s)) >= 0)
	{
		this.isOP = true;
		this.browser = s;
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}
	
	s = "Netscape6/";
	if ((i = ua.indexOf(s)) >= 0)
	{
		this.isNS = true;
		this.browser = "Netscape6";
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}
	
	// Treat any other "Gecko" browser as Netscape 6.1.
	
	s = "Gecko";
	if ((i = ua.indexOf(s)) >= 0)
	{
		this.isNS = true;
		this.browser = s;
		this.version = 6.1;
		return;
	}
	
	s = "MSIE";
	if ((i = ua.indexOf(s)))
	{
		this.isIE = true;
		this.browser = "Internet Explorer";
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}
	this.isIEandWin = (this.isIE && navigator.appVersion.indexOf("Win") != -1);
}

var _browser = new GuessBrowser();
var _activeButton = null;
var _currentMenu = null;	// which menu is currently visible
var _menuVisible = false;	// we think a drop-menu is showing
var _menuItems = new Array('menu_about', 'menu_membership', 'menu_ridgewoodrun', 'menu_members', 'menu_news');
var _menuHeight = 16;
var _minPos_x = new Array;
var _maxPos_x = new Array;
var _minPos_y = new Array;
var _maxPos_y = new Array;

if ( ! document.getElementById) {
	document.getElementById = function() {
		return null;
	};
}

function MenuSysInit (inRRSubFolder)
{
	if (inRRSubFolder) {
		ButtonPreloadImages ('../images/RidgewoodRun/but_rr_general_mo.gif','../images/RidgewoodRun/but_rr_registration_mo.gif','../images/RidgewoodRun/but_rr_awards_mo.gif','../images/RidgewoodRun/but_rr_directions_mo.gif','../images/RidgewoodRun/but_rr_photos_mo.gif')
	} else {
		ButtonPreloadImages('images/but_about_mo.gif','images/but_membership_mo.gif','images/but_ridgewood_mo.gif','images/but_membersarea_mo.gif','images/but_news_mo.gif');
		for (menuItem = 0; menuItem < _menuItems.length; menuItem ++) {
			var layerRef = document.getElementById(_menuItems[menuItem]); // refConstructor(_menuItems[menuItem]);
			var layerDim_y  = layerRef.offsetHeight + _menuHeight; // eval(layerRef + ".offsetHeight + _menuHeight");
			var layerDim_x  = layerRef.offsetWidth; // eval(layerRef + ".offsetWidth");
			var layerPos_y = findPosY(layerRef); // eval(layerRef));
			var layerPos_x = findPosX(layerRef); // eval(layerRef));
			
			_minPos_y[menuItem] = (layerPos_y);
			_maxPos_y[menuItem] = (layerPos_y + layerDim_y);
			_minPos_x[menuItem] = (layerPos_x);
			_maxPos_x[menuItem] = (layerPos_x + layerDim_x);
		}
	}
	if (document.getElementById("sidenav")) {
		// find all the LI tags inside a "sidenav" and give them a mouseOver/mouseOut handler
		var sfEls = document.getElementById("sidenav").getElementsByTagName("LI");
		if (inRRSubFolder == null) {
			inRRSubFolder = false;
		}
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].onmouseover = function()
			{
				this.className += " sfhover";
			};
			sfEls[i].onmouseout = function()
			{
				this.className = this.className.replace(new RegExp(" *sfhover"), "");
			};
		}
	}
	ButtonReloadPage(true);
	_initialized = true;
}

function refConstructor(menuId) {
	return "document.getElementById('" + menuId + "')";
}

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

function ButtonPreloadImages ()
{
	var d = document;
	if(d.images)
	{
	  if( ! d.MM_p)
	  {
		  d.MM_p = new Array();
	  }
	  var i, j = d.MM_p.length, a = ButtonPreloadImages.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 ButtonImgRestore ()
{
	  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 ButtonFindObj (n, documentObj)
{
	var p, i, objId;
	if( ! documentObj) {
		documentObj = document;
	}
	if( (p = n.indexOf("?")) > 0 && parent.frames.length) {
		documentObj = parent.frames[n.substring(p+1)].document;
		n = n.substring( 0, p );
	}
	if( ! (objId = documentObj[n]) && documentObj.all) {
		objId = documentObj.all[n];
	}
	for ( i=0; ! objId && i < documentObj.forms.length; i++) {
		objId = documentObj.forms[i][n];
	}
	for( i=0; ! objId && documentObj.layers && i < documentObj.layers.length; i++) {
		objId = ButtonFindObj(n, documentObj.layers[i].document);
	}
	if( ! objId && documentObj.getElementById) {
		objId = documentObj.getElementById(n);
	}
	return objId;
}

function ButtonSwapImage ()
{
	  var i, j=0, x, a = ButtonSwapImage.arguments;
	  document.MM_sr = new Array;
	  for ( i=0; i<(a.length-2); i+=3 )
	  {
		  if ((x = ButtonFindObj(a[i])) != null)
		  {
			  document.MM_sr[j++] = x; 
			  if(!x.oSrc)
			  {
				  x.oSrc = x.src;
			  }
			  x.src = a[i+2];
		  }
	  }
}

function ButtonReloadPage (initflag) // reloads the window if Nav4 resized
{ 
	if (initflag) with (navigator) 	{
		if ((appName=="Netscape") && (parseInt(appVersion)==4)) {
			document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage;
		}
	} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) {
		location.reload();
	}
}

function ButtonMouseOver (buttonId, moImage, menuId, actuatorId)
{
	ButtonSwapImage(buttonId, '', moImage, 1);
	var menu = document.getElementById(menuId);
	var actuator = document.getElementById(actuatorId);

	if (menu != null) {
		if (_currentMenu != null) {
			_currentMenu.style.visibility = "hidden";
		}
		menu.style.left = this.offsetLeft + "px";
		menu.style.top = this.offsetTop + this.offsetHeight + "px";
		menu.style.visibility = "visible";
		_currentMenu = menu;
		_menuVisible = true;
		if (document.layers) {
			document.captureEvents(Event.MOUSEMOVE);
		}
		document.onMouseMove = ReportEvent;
	}
	return(true);
}

function ButtonMouseOut (buttonId, menuId, actuatorId)
{
	ButtonImgRestore();
	return(true);
}

function MoveMenu() {
	document.releaseEvents(Event.MOUSEOVER);
	_currentMenu.style.visibility = "visible";
}

function ReportEvent(e) 
{
	var posx = 0;
	var posy = 0;

	if (!e) {
		e = window.event;
	}
	if (e.pageX || e.pageY) {
		mousePos_x = e.pageX;
		mousePos_y = e.pageY + _menuHeight;
	} else if (e.clientX || e.clientY) {
		if (isMac) {
			mousePos_x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			mousePos_y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop + _menuHeight;
		} else {
			mousePos_x = e.clientX + document.body.scrollLeft;
			mousePos_y = e.clientY + document.body.scrollTop + _menuHeight;
		}
	}
	if ((mousePos_y > maxPos_y[_currentMenu]) || (mousePos_x < minPos_x[_currentMenu]) || (mousePos_x > maxPos_x[_currentMenu]) ||(mousePos_y < minPos_y[_currentMenu])) {
		_currentMenu.style.visibility = "hidden";	// eval(layerRef + ".style.visibility = 'hidden'");
		v = _currentMenu;
		//if (_currentMenu != gatewayLock) {
			//headerOut(v);
		//};
		_currentMenu = null;
		if (isIEandWin) {
			if (document.all.layerToHide) {
				showDiv('layerToHide');
			}
		}
		if(flashPresent==1){
			eval("document.flashLayer.visibility = 'visible'");
		}
		document.onmousemove = null;
	}
}

function GetCourseURL()
{
	var courseURL = document.getElementById("WebURL").value;
	if (courseURL.length > 0)
	{
		var URLtoCheck = courseURL.toLowerCase();
		if (URLtoCheck.indexOf("http://") < 0)
		{
			courseURL = "http://" + courseURL;
		}
		window.open(courseURL, "_new");
	}
}
