function preloadImage(img)
{
	// find the -over image and preload it
	// allow for LRS corp-style -on and -off 
	if(img.src.match(/-(off|on).gif$/i))
	{
		var src = img.src.replace(/(-off|on).gif$/i, "-on.gif");
	}
	else
	{
		var src = img.src.replace(/(-over)?.gif$/i, "-over.gif");
	}
	var aName = img.name + "-over"; // not a real src name, just placeholder   
	//used to use this for aName: src.replace(/^.*\/([^\/]*).gif$/i, "$1").toLowerCase();
	preloadHelper(aName, src);
}
function preloadHelper(aName, src)
{
	if(!aImages[aName])
	{
		aImages[aName] = new Image();
		aImages[aName].src = src;
	}
}

var aImages = new Array();
function preloadImages(d)
{	
	if(!d || !d.images) d = document;
	if(d.images) for(var i = 0; i < d.images.length; i++)
	{
		var img = d.images[i];
		if(img.name != "")
		{
			preloadImage(img);
		}
	}
	if(d.layers)
	{
		var i;
		for(var l = 0 ; l < d.layers.length; l++)
		{
			preloadImages(d.layers[l].document);
		}
	}
}



function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n)>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;
}

var g_aFoundImages = new Array();
function find_image(s,d)
{
	//return MM_findObj(s, d);
	//alert("findimage " + s);
	if(g_aFoundImages[s]) return g_aFoundImages[s];
	
	if(!d) d = document;
	var str = "";
	for(var i = 0; i < d.images.length; i++)
	{
		str += d.images[i].name + "\n";
	}
	//alert(str);
	if(d.images[s]) 
	{	
		g_aFoundImages[s] = d.images[s];
		return d.images[s];
	}
	else if(d.layers)
	{
		var i;
		for(var l = 0 ; l < d.layers.length; l++)
		{
			i = find_image(s, d.layers[l].document);
			if(i) return i;
		}
	}
}

function m_over(a, imgName)
{
	var aNames = imgName.split("|")
	if(!a.imgName)
	{
		a.imgName = imgName;
		a.onmouseout = m_out;
	}
	for(var i = 0; i < aNames.length; i++)
	{
		//var img = document.images[aNames[i]];
		var img = find_image(aNames[i]);
		if(img) 
		{
			//allow for LRS corp-style -on -off images
			if(-1 != aNames[i].indexOf("LRSCorp"))
			{
				img.src = img.src.replace(/(-off).gif$/i, "-on.gif");
			}
			else
			{
				img.src = img.src.replace(/(-over)?.gif$/i, "-over.gif");
			}
		}
	}
}
function m_out()
{
	if(this.lock_on) return;
	// because of the way this is dynamically assigned, the a object is "this"
	var a = this;
	var aNames = a.imgName.split("|")
	for(var i = 0; i < aNames.length; i++)
	{
		//var img = document.images[aNames[i]];
		var img = find_image(aNames[i]);
		if(img) 
		{
			//allow for LRS corp-style -on -off images
			if(-1 != aNames[i].indexOf("LRSCorp"))
			{
				img.src = img.src.replace(/(-on).gif$/i, "-off.gif");
			}
			else
			{
				img.src = img.src.replace(/(-over)?.gif$/i, ".gif");
			}
		}
	}
}

var gMenuOutTimeout;
var gCurrentOverCaller = "";
var gCurrentOver_r = null;
var gCurrentOver_m = "";
var gnOver = 0;
function menu_over_m(obj, id)
{
	gnOver++;
	obj.onmouseout = menu_out;
	// force the A tag not to let go of its mouseover
	if(gCurrentOver_r)
	{
		gCurrentOver_r.lock_on = false;
		gCurrentOver_r.onmouseout();
	}
	if(obj.childNodes[0].onmouseover) // the section we're in is permanently "on" and has no mouseover
	{
		gCurrentOver_r = obj.childNodes[0];
		gCurrentOver_r.lock_on = true;
		gCurrentOver_r.onmouseover();
	}
	// make sure the hovered object's submenu is shown
	sE(gE(id));
	hide_flash();
	// if hovering over one that's already shown, do nothing
	if(gCurrentOver_m == id)
	{
		return;
	}
	if(gCurrentOver_s)
	{
		menu_style(gCurrentOver_s, false);
		gCurrentOver_s = "";
	}
	if(gCurrentOver_l) 
	{
		hE(gE(gCurrentOver_l));
		menu_style(gCurrentOver_l, false);
		gCurrentOver_l = "";
	}
	if(gCurrentOver_m) 
	{
		hE(gE(gCurrentOver_m));
	}
	gCurrentOver_m = id;
}

var gCurrentOver_l = "";
function menu_over_l(obj, id)
{
	gnOver++;
	obj.onmouseout = menu_out;

	// make sure the hovered object's submenu is shown
	sE(gE(id));
	hide_flash();
	// turn on the correct style
	menu_style(id, true);

	// if this is already the visible child block, just return
	if(gCurrentOver_l == id)
	{
		return;
	}
	// hide the old child block
	if(gCurrentOver_l) 
	{
		hE(gE(gCurrentOver_l));
		menu_style(gCurrentOver_l, false);
	}
	// make this the current child block
	gCurrentOver_l = id;
}
var gCurrentOver_s = "";
function menu_over_s(obj, id)
{
	menu_style(id, true);
	if(id == gCurrentOver_s) return;
	if(gCurrentOver_s)
	{
		menu_style(gCurrentOver_s, false);
	}
	gCurrentOver_s = id;
}

function menu_style(id, on)
{
	if(gE("p"+id).className)
	{
		var str = on? "-on" : "";
		var curc = gE("p"+id).className
		var newc = curc.replace(/(-on)?$/, str);
		if(curc != newc)
		{
			gE("p"+id).className = newc;
		}
	}
}

var gTempMenuObj = null;
function menu_out()
{
	gnOver--;
	if(gnOver < 0) gnOver = 0;
	//alert("out: " + this.trigger_id + ":: " + gnOver);
	if(!gnOver)
	{
		clearTimeout(gMenuOutTimeout);
		gMenuOutTimeout = setTimeout("menu_out_helper()", 400);
	}
}
function menu_out_helper()
{
	if(gnOver > 0) return;
	gnOver = 0;

	// release the main image from being in moused over state
	if(gCurrentOver_r)
	{
		gCurrentOver_r.lock_on = false;
		gCurrentOver_r.onmouseout();
		gCurrentOver_r = null;
	}
	if(gCurrentOver_m)
	{
		hE(gE(gCurrentOver_m));
		gCurrentOver_m = "";
	}
	if(gCurrentOver_l) 
	{
		// turn on the correct style
		menu_style(gCurrentOver_l, false);
		hE(gE(gCurrentOver_l));
		gCurrentOver_l = "";
	}
	if(gCurrentOver_s)
	{
		menu_style(gCurrentOver_s, false);
		gCurrentOver_s = "";
	}
	show_flash();
}

var gMenuClickCaller = "";
var gMenuClickDestination = "";
var gMenuClickTimeout;
function menu_click(id,url)
{
	if(gMenuClickCaller == "")
	{
		gMenuClickCaller = id;
		gMenuClickDestination = url;
	}
	else if(id.match("_").length == 2)
	{
		gMenuClickCaller = id;
		gMenuClickDestination = url;
	}
	if(gMenuClickTimeout) clearTimeout(gMenuClickTimeout);
	gMenuClickTimeout = setTimeout("menu_click_helper()",0);
}
function menu_click_helper()
{
	gMenuClickCaller = "";
	document.location.href = gMenuClickDestination;
}

function supports_tx_flash()
{
	// if a browser has activex, it can handle flash transparency wmode option
	if("undefined" != typeof ActiveXObject) return true;
	return false;
}
function hide_flash()
{
	if(!supports_tx_flash() && document.getElementById)
	{
		for(var i = 0; i < g_flashDivs.length; i++)
		{
			var elt = document.getElementById(g_flashDivs[i]);
			if(elt && elt.style && "undefined" != typeof elt.style.visibility)
			{
				elt.style.visibility = "hidden";
			}
		}
	}
}
function show_flash()
{
	if(!supports_tx_flash() && document.getElementById)
	{
		for(var i = 0; i < g_flashDivs.length; i++)
		{
			var elt = document.getElementById(g_flashDivs[i]);
			if(elt && elt.style && "undefined" != typeof elt.style.visibility)
			{
				elt.style.visibility = "visible";
			}
		}
	}
}
var g_flashDivs = new Array();
function add_flash(id)
{
	g_flashDivs[g_flashDivs.length] = id;
}