/************************************************************
AUTISM SPEAKS : STANDALONE GLOBALNAVIGATION SCRIPTS

This module contains all javascript functions related to
the global-navigation; this module should be used when
running the global navigation in a 3rd-partye site; this 
module also dynamically generates the HTML and outputs to 
the containing document - NOTE: the nav HTML provides no self-positioning
information -- it must be positioned absolutely within the
containing document.

Copyright (c) 2000-2005, Media Farm Solutions, LLC. All Rights Reserved.
*************************************************************/
/************************************************************
GLOBAL VARIABLES
*************************************************************/

var bName = navigator.appName;				// browser name
var bPlatform = navigator.platform;			// platform
var bVer = parseInt(navigator.appVersion);	// version
var browser = "";							// browser name shorthand
var doc = "";								// for dHTML document object model reference
var sty = "";								// for dHTML style attribute reference
var ns6mod = "";							// to work method into object model reference generation

var navOver = null;			// name of the navigation button that the mouse is over
var menuOver = null;		// name of the menu that the mouse is over
var menuCloseDelay = 100;	// number of milliseconds after which to close a menu
var menuTimeout;			// id of timeout for closing menus
var debug = true;			// whether or not in debug mode

var site_url = "http://www.autismspeaks.org";	// url of actual Austism Speaks site

/************************************************************
ON-COMPILE EXECUTABLES
*************************************************************/
// set up dhtml references depending on browser
if (document.all) {
	// MSIE 4+
	browser="IE";
	doc = "document.all.";
	sty = ".style";
	if (bPlatform=="MacPPC") {
		bVerStart = navigator.appVersion.indexOf("MSIE")+5;
		bVer = parseInt(navigator.appVersion.substr(bVerStart,5));
	} 
} else if (document.layers) {
	// Netscape Navigator 4+
	browser="NN";
	doc = "document.";
} else if (document.getElementById) {
	// Netscape 6
	browser="NS6";
	doc = "document.getElementById('";
	ns6mod = "')";
	sty = ".style";
	bVerStart = navigator.userAgent.lastIndexOf("/")+1;		
	bVer = parseInt(navigator.userAgent.substr(bVerStart,navigator.userAgent.length));
}

// ouput the HTML for the global nav
// get via a script tag that resources the standard global nav server module
document.open();
document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"" + site_url +"/css/cms/global.css\" />");
document.write("<script type=\"text/javascript\" src=\"" + site_url + "/templates/includes/server/global_navigation_standalone.php?site_url=" + site_url + "\"></script>");
document.close();

// init the navigatino
initASNav();
	
/************************************************************
INIT FUNCTIONS 
*************************************************************/
function initASNav() {
	// init function for Autism Speaks global navigation
	// load rollovers
	loadImages("/images/nav/gnav2-1-off.gif","/images/nav/gnav2-1-on.gif","/images/nav/gnav2-2-off.gif","/images/nav/gnav2-2-on.gif","/images/nav/gnav2-3-off.gif","/images/nav/gnav2-3-on.gif","/images/nav/gnav2-4-off.gif","/images/nav/gnav2-4-on.gif","/images/nav/gnav2-5-off.gif","/images/nav/gnav2-5-on.gif","/images/nav/gnav2-6-off.gif","/images/nav/gnav2-6-on.gif");
	loadImages("/images/nav/menu2-a-01-off.gif","/images/nav/menu2-a-01-on.gif","/images/nav/menu2-a-02-off.gif","/images/nav/menu2-a-02-on.gif","/images/nav/menu2-a-03-off.gif","/images/nav/menu2-a-03-on.gif","/images/nav/menu2-a-04-off.gif","/images/nav/menu2-a-04-on.gif","/images/nav/menu2-a-05-off.gif","/images/nav/menu2-a-05-on.gif");
	loadImages("/images/nav/menu2-b-01-off.gif","/images/nav/menu2-b-01-on.gif","/images/nav/menu2-b-02-off.gif","/images/nav/menu2-b-02-on.gif","/images/nav/menu2-b-03-off.gif","/images/nav/menu2-b-03-on.gif","/images/nav/menu2-b-04-off.gif","/images/nav/menu2-b-04-on.gif","/images/nav/menu2-b-05-off.gif","/images/nav/menu2-b-05-on.gif","/images/nav/menu2-b-06-off.gif","/images/nav/menu2-b-06-on.gif");
	loadImages("/images/nav/menu2-c-01-off.gif","/images/nav/menu2-c-01-on.gif","/images/nav/menu2-c-02-off.gif","/images/nav/menu2-c-02-on.gif","/images/nav/menu2-c-03-off.gif","/images/nav/menu2-c-03-on.gif","/images/nav/menu2-c-04-off.gif","/images/nav/menu2-c-04-on.gif","/images/nav/menu2-c-05-off.gif","/images/nav/menu2-c-05-on.gif","/images/nav/menu2-c-06-off.gif","/images/nav/menu2-c-06-on.gif");
	loadImages("/images/nav/menu2-e-01-off.gif","/images/nav/menu2-e-01-on.gif","/images/nav/menu2-e-02-off.gif","/images/nav/menu2-e-02-on.gif","/images/nav/menu2-e-03-off.gif","/images/nav/menu2-e-03-on.gif","/images/nav/menu2-e-04-off.gif","/images/nav/menu2-e-04-on.gif","/images/nav/menu2-e-05-off.gif","/images/nav/menu2-e-05-on.gif");
	loadImages("/images/nav/menu2-f-01-off.gif","/images/nav/menu2-f-01-on.gif","/images/nav/menu2-f-02-off.gif","/images/nav/menu2-f-02-on.gif","/images/nav/menu2-f-03-off.gif","/images/nav/menu2-f-03-on.gif","/images/nav/menu2-f-04-off.gif","/images/nav/menu2-f-04-on.gif","/images/nav/menu2-f-05-off.gif","/images/nav/menu2-f-05-on.gif","/images/nav/menu2-f-06-off.gif","/images/nav/menu2-f-06-on.gif","/images/nav/menu2-f-07-off.gif","/images/nav/menu2-f-07-on.gif");
}

/************************************************************
ROLLOVERS
*************************************************************/
function getImgName(imgRef) {
	// returns a name based on the image reference given
	var str = (imgRef.indexOf("/")==-1)?imgRef.substring(0,imgRef.lastIndexOf(".")):imgRef.substring((imgRef.lastIndexOf("/")+1),imgRef.lastIndexOf("."));
	str = str.replace(/-/gi,"_"); // replace dashes
	return str;
}

function loadImages() {
	// loads N images passed as a parameter, gives each a unique name based on src
	// to be referred later by "changeImages"
	var tempImgName="";
	if (document.images) {
		for (i=0;i<loadImages.arguments.length; i++) {
			tempImgName = getImgName(loadImages.arguments[i]);
			eval(tempImgName + "= new Image()");
			eval(tempImgName + ".src='" + site_url + loadImages.arguments[i] + "'"); // modified to include url for site hosting actual images
		}
	}
}

function changeImages(imgObjName,newImgRef,layerName) {
	// pass an empty string for layerName if the image isn't within a layer
	if ((document.images)) {
		var newImgObj = eval(getImgName(newImgRef));
		var obj=((document.layers)&&(layerName!=""))?eval("document."+layerName+".document."+imgObjName):eval("document."+imgObjName);
		obj.src=newImgObj.src;
	}
}

/************************************************************
X-BROWSER DHTML FUNCTIONS
*************************************************************/
function getObjectStyle(obj) {
	return (typeof obj=="string")? eval(doc + obj + ns6mod + sty):obj;
}

function getObjectNoStyle(obj) {
	return (typeof obj=="string")? eval(doc + obj + ns6mod):obj;
}

function show(obj) {
	getObjectStyle(obj).visibility = "visible";
}

function hide(obj) {
	getObjectStyle(obj).visibility = "hidden";
}


/************************************************************
NAV MENU FUNCTIONS
*************************************************************/

// global nav links
function overNav(name) {
	// special mouseover event handling for global navigation items
	show(name + "Menu");  	// show a menu of the given name
	setNavOver(name);		// record which nav link we are over
}

function outNav(name) {
	// Onmouseout of nav, hide the menu, waiting first
	setNavOver(null);
	menuTimeout = setTimeout("hideMenuDelayedFromNav('" + name + "');",menuCloseDelay);
}

function hideMenuDelayedFromNav(name) {
	// Onmouseout of nav, hide a menu of the given name, unless over the menu
	if (name!=menuOver) {
		hide(name + "Menu");
	}
}

// subnavigation menus
function outMenu(name) {
	// Onmouseout of menu, hide the menu, wating first
	setMenuOver(null);
	menuTimeout = setTimeout("hideMenuDelayedFromMenu('" + name + "');",menuCloseDelay);
}

function hideMenuDelayedFromMenu(name) {
	// Onmouseout of menu, hide a menu of the given name, unless over the corresponding global nav (hence the menu would be open already)
	if ((name!=navOver) && (name!=menuOver)) {
		hide(name + "Menu");
	}
}

// utilities
function setNavOver(name) {
	// keep track of what menu the mouse is over
	navOver = name;
}

function setMenuOver(name) {
	// keep track of what menu the mouse is over
	menuOver = name;
}