///////////////////////////////////////////////
// START MENU CODE                           //
// Generated by WebMenu                      //
//   Property of Wired Effects Inc.          //
// Generated on Sun Jun 26 21:45:55 EDT 2005 //
///////////////////////////////////////////////


var doc = null;
var menus = Array(35);
var menus_size = 0;
var curMenu = Array("", "", "", "", "");
var nav = "ie";
var base_x = 0;
var base_y = 0;
var pos_set = Array(5);
var hide_all_timer;
var cur_level = 0;


if (document.all)
	//doc = document.all;
	nav = "ie";
else if (!document.all && document.getElementById)
	//doc = document.layers;
	nav = "nn6";
else if (document.layers)
	//doc = document.layers;
	nav = "nn4";



////////////////////////////////////
// MENU FUNCTIONS
////////////////////////////////////


//////////////////////////////////////////////////////////

/**
 * called by the initial mouse over
 */
function rootMenuOver(id, obj) {
	clearAllMenus();
	cancelTimeout(id);
	showMenu(id, obj);
}

function rootMenuOut(id) {

}

/**
 * returns the array position of the menu
 */
function getMenu(id) {
	for (i=0; i < menus.length; i++) {
		if (menus[i] == null)
			return null;

		if (menus[i][0] == id)
			return i;

	}

	return null;
}

/**
 * hides a menu
 */
function timeoutMenu(id, t) {
	//hideMenu(id);

	index = getMenu(id);

	window.clearTimeout(menus[index][20]);
	menus[index][12] = window.setTimeout("hideMenu('" + id + "');", t);

}

/**
 * cancels a menu from being hidden
 */
function cancelTimeout(id) {
	index = getMenu(id);

	window.clearTimeout(menus[index][12]);
}

/**
 * shows a menu
 */
function showMenu(id, obj) {
	index = getMenu(id);
	show_init(id, obj);
	window.clearTimeout(hide_all_timer);
	level = menus[index][1];

	menus[index][11] = 1;

	//hide the other menus at that level
	for (i = 0; i < menus_size; i++) {
		if (i != index && menus[i][1] == level)
			menus[i][11] = 0;
	}


	refresh();
}

/**
 * hides a menu
 */
function hideMenu(id) {
	index = getMenu(id);

	menus[index][11] = 0;
	refresh();
}

/**
 * clear subs to clear all sub menus
 */
function clearSubs(id, level) {

	for (i = 0; i < menus_size; i++) {
		if (menus[i][0] != id && menus[i][1] > level) {
			menus[i][11] = 0;
			//alert(menus[i][1] + ", " + level);
		}
	}

	refresh();
}


/**
 * calls hide on all menus
 */
function clearAllMenus() {
	for (i = 0; i < menus_size; i++) {
		menus[i][11] = 0;
		window.clearTimeout(menus[i][12]);

		//hideMenu(menus[i][0]);
	}
	//window.clearTimeout(hide_all_timer);
	refresh();
}

/**
 * updates the screen
 */
function refresh() {

	for (i = 0; i < menus_size; i++) {

		id = menus[i][0];
		var obj = null;
		if (nav == "ie") {
		    obj = document.all[id];
		} else if (nav == "nn6") {
		    obj = document.getElementById(id);
		}

		// Move the layer
		if (nav == "ie" || nav == "nn6") {
		    var offset = parseInt(document.body.clientWidth) - parseInt(obj.style.left) - parseInt(obj.style.width);
		    //alert(offset + ", " + obj + ", " + document.body.clientHeight + ", " + obj.style.left);
		    if (offset < 0)
			obj.style.left = parseInt(obj.style.left) + parseInt(offset) - 5;
		}

		if (menus[i][11] == 0) {
			if (nav == "ie")
				obj.style.visibility='hidden';
			else if (nav == "nn6")
				obj.style.visibility='hidden';
			else if (nav == "nn4")
				document.layers[id].visibility='hide';
		} else {
			if (nav == "ie") {
				obj.style.visibility='visible';
			} else if (nav == "nn6") {
				obj.style.visibility='visible';
			} else if (nav == "nn4") {
				obj = document.layers[id];
				obj.visibility='show';
			}
		}
	}
}

//////////////////////////////////////////////////////////////

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;
}


/**
 * Mouse over event
 */
function onOver(obj, id, color) {
	obj.style.backgroundColor=color;
}

/**
 * Cancel the timer when a layer is mouse overed
 */
function keepLowerLevels(id){
	// Check if any lower level menus need their timer stopped
	index = getMenu(id);
	level = menus[index][1];


	for (i = 0; i < menus.length; i++) {
		if (menus[i] == null)
			break;

		if (menus[i][1] < level && menus[i][0] != id)
			cancelTimeout(menus[i][0]);

	}
}

/**
 * Mouse out event
 */
function onOut(obj, color) {
	obj.style.backgroundColor=color;
}

/**
 * This is a standard function that is used to draw a menu at
 * a given (x,y) co-ordinate.  The table that will be drawn will
 * be of width w, and height h * number of items
 */
function generateMenu(id, level, x, y, w, h, items, cssClass, parent){
	menus[menus_size] = Array(14);
	menus[menus_size][0] = id;
	menus[menus_size][1] = level;
	menus[menus_size][2] = x;
	menus[menus_size][3] = y;
	menus[menus_size][4] = w;
	menus[menus_size][5] = h;
	menus[menus_size][6] = items;
	menus[menus_size][7] = cssClass;
	menus[menus_size][8] = "";
	menus[menus_size][9] = 0;
	menus[menus_size][10] = parent;
	menus[menus_size][11] = 0; //visible
	menus[menus_size][12] = null; //timer
	menus_size++;

	// output the div tags first
	var menuText = "";

	if (document.all || document.getElementById)
		menuText +=
			"<div id=\"" + id + "\" style=\"position:absolute; left: -500" +
			"; top:" + y + "; width: " + w + "; height: " + h +	"; visibility: hidden; z-index:" + level + ";\" ";

	else
		menuText +=
			"<layer z-index='" + level + "' id=\"" + id + "\" visibility=hide left=" + x +
			" top=" + y + " width=" + w + " height=" + h;

	// finish off the div tag with the mouse overs to make them vanish
	var overout = " onMouseOver=\"javascript:clearSubs('" + id + "'," + (level+1) + ");cancelTimeout('" + id + "'); window.clearTimeout(hide_all_timer); keepLowerLevels('" + id + "'); \" onMouseOut=\"javascript:timeoutMenu('" + id + "', 200); hide_all_timer = window.setTimeout('clearAllMenus();', 500); \" ";

	menuText += overout + ">\n";


	menuText += "	<table width=" + w + " height=" + h + " border=0 cellpadding=1 cellspacing=0 class=" + cssClass + ">\n";
	menuText += "	<tr>\n";

	menuText += "	<td>\n";
	menuText += "	<table width=" + w + " height=" + h + " border=0 cellpadding=0 cellspacing=1>\n";

	var MaxWidth = w / 6;
	

	for (i = 0; i < items.length; i++) {

		subMenu_link = "";
		if (items[i].length == 7) {
			subMenu_link = " href='" + items[i][1] + "' onMouseOver=\"javascript:showMenu('" + items[i][6] + "', this); \" ";
		}

		menuText += "		<tr class='" + cssClass + "'>\n";

		menuText += "			<td nowrap class='" + cssClass + "' bgcolor=" + items[i][4] + " onMouseOver='javascript:onOver(this, \"" + id + "\", \"" + items[i][5] + "\")' onMouseOut='javascript:onOut(this,\"" + items[i][4] + "\" )' >\n";
		if (subMenu_link)
			menuText += "				<table border=0 cellpadding=0 cellspacing=0 width='100%'><tr><td class='" + cssClass + "Link' width='95%'><a target='" + items[i][2] + "' class='" + items[i][3] + "' " + subMenu_link + "><div class='" + cssClass + "Item' style='cursor: pointer; cursor: hand;'>" + items[i][0] + "</td><td align=right class='" + cssClass + "Sym'><a class='" + items[i][3] + "'>&gt;&nbsp;</a></td></tr></table></div></a>\n";
		else
			menuText += "				<a target='" + items[i][2] + "' onMouseOver='javascript:clearSubs(\"" + id + "\"," + level + "); ' class='" + items[i][3] + "' href='" + items[i][1] + "'><div class='" + cssClass + "Item' style='cursor: pointer; cursor: hand;'>" + items[i][0] + "</div></a>\n";

		menuText += "			</td>\n";
		menuText += "		</tr>";
	}

	menuText += "	</table>\n";
	menuText += "	</td>\n";
	menuText += "	</tr>\n";
	menuText += "	</table>\n";

	if (nav == "ie" || nav == "nn6")
		menuText += "</div>";
	else if (nav == "nn4")
		menuText += "</layer>";

	return menuText;

}

/**
 *
 */
function show_init(id, obj) {

	var x = new getObj(id);
	var menu = getMenu(id);
	var menu_p = null;

	level = menus[menu][1];
	cur_level = level;

	if (menus[menu][10]){
		menu_p = getMenu(menus[menu][10]);
	}

	if (menus[menu][3] < 0 && nav == "nn6") {
		menus[menu][3] = -1 * menus[menu][3]/4;
	} else if (menus[menu][3] < 0) {
		menus[menu][3] = -1 * menus[menu][3];
	}

	if (nav == "nn4" && menu_p != null) {
		x.style.top = findPosY(obj) + menus[menu][3] + menus[menu_p][9];
		x.style.left = document.layers[menus[menu][10]].left + menus[menu][2] + findPosX(obj) + (menus[menu][4] - 10) ;
	} else {

		if (nav == "nn4") {
			x.style.top = findPosY(obj) + menus[menu][3];
		} else if (nav == "nn6") {
			//alert(x.style.top + ", " + x.style.height + ", " + x.src + ", " + x.value);
			x.style.top = findPosY(obj) + menus[menu][3];
		} else {
			x.style.top = findPosY(obj) + menus[menu][3];
		}

		if (level > 0)
			x.style.left = findPosX(obj) + menus[menu][2] + (menus[menu][4] - 10);
		else
			x.style.left = findPosX(obj) + menus[menu][2];
	}

	menus[menu][9] = x.style.top;

}



function getObj(name)
{
	 if (document.getElementById)
	 {
		   this.obj = document.getElementById(name);
		   this.style = document.getElementById(name).style;
	 }
	 else if (document.all)
	 {
		   this.obj = document.all[name];
		   this.style = document.all[name].style;
	 }
	 else if (document.layers)
	 {
		   if (document.layers[name])
		   {
			this.obj = document.layers[name];
			this.style = document.layers[name];
		   }
		   else
		   {
			this.obj = document.layers[name];
			this.style = document.layers[name];
		   }
	 }
}
