/*
Lyris Sidebar Copyright (c) 2006 Lyris Technologies, Inc. All Rights Reserved.
*/
var isIE=(document.all && 0<navigator.userAgent.toLowerCase().indexOf("msie"))?true:false;
var isIE6=(document.all && 0<navigator.userAgent.toLowerCase().indexOf("msie 6"))?true:false;
function menuItem( MenuId, MenuNm, MenuRoot, ItmToken, LinkUrl, NumItems )  {
	this.Id = MenuId;
	this.Name = MenuNm;
	this.Root = !MenuRoot?"":MenuRoot; 
	this.Items = new Array(NumItems);
	this.ItemCount = 0;
	this.LinkUrl = LinkUrl;
	this.MenuSize = NumItems;
	this.Token = ItmToken;
	this.AltText = MenuNm;
	this.Depth = 0;
	this.Parent = null;
	this.Top = 3;
	this.Left = isIE6?170:190;
	this.Width = 200;
}
function mkMenuItem( MenuNm, MenuLink, NumItems )  {
	if( this.MenuSize <= this.ItemCount ) return;
	var vroot = new String(), MenuId = this.ItemCount;
	vroot = this.Root;
	if( 0< vroot.length ) vroot = vroot + "_";
	this.ItemCount++;
	this.Items[MenuId] = new menuItem( MenuId, MenuNm, vroot+this.Id, "", MenuLink, NumItems );
	this.Items[MenuId].Depth=this.Depth+1;
	this.Items[MenuId].Parent=this;
	if( 0 >= this.Depth ) { this.Items[MenuId].Left = isIE6?95:115; }
	return this.Items[MenuId];
}
function getFullName()  {  return ( 0 < this.Root.length ) ? this.Root + "_" + this.Id : this.Id;  }
menuItem.prototype.MenuNowOpen = "";	// the menu that is now open
menuItem.prototype.MenuClosing = "";	// the menu that is waiting to be closed
menuItem.prototype.MenuTimerId = "";	// tracks closing timer
menuItem.prototype.MenuOpening = "";	// for the opening "flyout"
menuItem.prototype.MenuOpenTimerId = "";
menuItem.prototype.mkItem = mkMenuItem;
menuItem.prototype.fullname = getFullName;
menuItem.prototype.isSibling = isSiblingMenu;

function getMenu( smenu )
{	
	var vo, vs, spos=0, npos, vidx;
	vidx = parseInt(smenu);
	vo = oMenus[vidx];
	if( !vo )  return vo;
	while( spos <= (npos=smenu.indexOf("_",spos)) )  {
		vidx = parseInt(smenu.substring( npos+1 ));
		vs = vo.Items[vidx];
		if( !vs )  break;
		vo = vs;
		spos = npos+1;
	}	
	return vo;
}
var vlogi = 0;
function log(slog)
{
	var vlog = document.getElementById("lsblog");
	if( vlog ) {
		vlog.innerHTML =  (vlogi++) + ": " + slog+"<BR>" + vlog.innerHTML;
	}
}
function menuExpAll()	// expand all menus
{
	for( var i = 1; i < numMenuItems; i++ )  {
		var omenu = oMenus[i];
		if( !omenu.State && 0 < omenu.ItemCount ) menuflip(i);
	}
}
function menuColAll()	// collapse all menus
{
	for( var i = 1; i < numMenuItems; i++ )  {
		var omenu = oMenus[i];
		if( omenu.State && 0 < omenu.ItemCount ) menuflip(i);
	}
}
function menuopenbyname( smenu )	// expand a root menu
{
	var target = 0;
	for( var i = 0; i < numMenuItems; i++ )  {
		var omenu = oMenus[i];
		if( omenu && omenu.Name == smenu )
		{
			target = i;
			break;
		}
	}
	if( target )
          menuflip(target, 1);
          //          menuopen( target );
}
function menuflip( imenu, expand_only )	// expand/collapse a root menu
{
  if ( expand_only == null ) {
    expand_only = 0;
  }

	var omenu, odiv, odivr;
	omenu = oMenus[imenu];
	if(!omenu) return;
	odiv = document.getElementById("Menu"+omenu.fullname());
	odivr = document.getElementById("Menu"+omenu.Id+"row");
	if( 0 < omenu.ItemCount ) {
		if ( !omenu.State || !expand_only ) {
			omenu.State = !omenu.State;
		}
		odiv.innerHTML = mkMenu(omenu);
		if( omenu.State ) {
			odiv.className = "menu";
			odivr.style.display = "block";
		} else {
			odiv.className= "menu_pre";
			if(isIE) odivr.style.display = "none";
		}
	} else if( !expand_only ) {
		location = omenu.LinkUrl;
	}
}
function isSiblingMenu( sb )
{
	var oSib = getMenu(sb);
	if( !oSib ) return 0;
	return ( (this.Depth == oSib.Depth) && (this.Root == oSib.Root) );
}
function menuopen( smenu )	// open a sub menu
{
	//return domenuopen(smenu);
	if( smenu == menuItem.prototype.MenuOpening )  return;
	if( smenu == menuItem.prototype.MenuNowOpen )  return;
	if( "" != menuItem.prototype.MenuOpening ) {
		if( 0 >= menuItem.prototype.MenuOpenTimerId ) alert('timerid error');
		window.clearTimeout( menuItem.prototype.MenuOpenTimerId );
		menuItem.prototype.MenuOpenTimerId = 0;
		menuItem.prototype.MenuOpening = "";
		log("stopped menu from opening");
	}
	log("opening menu " + smenu);
	menuItem.prototype.MenuOpening = smenu;
	menuItem.prototype.MenuOpenTimerId = window.setTimeout( "domenuopen(\""+smenu+"\");", 500 );
}
function findCommonDepth( stra, strb )
{
	var vdepth = 0, i;
	for( i = 0; i < stra.length && i < strb.length; i++ ) {
		if( stra.charAt(i) != strb.charAt(i) ) break;
		if( "_" == stra.charAt(i) ) vdepth++;
	}
	if(0<vdepth&&stra.charAt(i)=="_")vdepth--;
	return vdepth;
}
function domenuopen( smenu )	// open a sub menu
{
	var omenu, odiv, odivh, oifsh;
	
	omenu = getMenu(smenu); if(!omenu) return;
	log("opening menu " + smenu);
	
	if( 0 < menuItem.prototype.MenuClosing.length )  {
		var sClosing = menuItem.prototype.MenuClosing;
		if( smenu == sClosing ) { stopmenuclose(); return; }
		if( smenu.length >= sClosing.length && sClosing == smenu.substring(0,sClosing.length) ) // sClosing is a parent
			stopmenuclose();
	}
	if( "" != menuItem.prototype.MenuNowOpen )  {
		/// something's already open, find out what to do
		var sNowOpen = menuItem.prototype.MenuNowOpen;
		if( smenu == sNowOpen )  return;
		if( smenu.length >= sNowOpen.length && sNowOpen == smenu.substring(0,sNowOpen.length) ) // sNowOpen is a parent
			stopmenuclose();
		else if( sNowOpen.length >= smenu.length && smenu == sNowOpen.substring(0,smenu.length) ) // sNowOpen is a child
			domenuclose(sNowOpen,1);
		else if( omenu.isSibling( sNowOpen ) )
			domenuclose(sNowOpen,0);
		else  {
			var vCommonDepth = findCommonDepth( sNowOpen, smenu );
			var nowmenu = getMenu(sNowOpen);
			//alert( sNowOpen + "\r\n" + smenu + ", common depth " + vCommonDepth + ", depth: " + nowmenu.Depth );
			domenuclose(sNowOpen,nowmenu.Depth-vCommonDepth);
		}
	}
	
	odiv = document.getElementById("Menu"+omenu.fullname()+"Pane");
	odivh = document.getElementById("Menu"+omenu.fullname()+"Head");
	oifsh = document.getElementById("Menu"+omenu.fullname()+"Shim");
	
	menuItem.prototype.MenuNowOpen = smenu;
	menuItem.prototype.MenuOpenTimerId = 0;
	menuItem.prototype.MenuOpening = "";
	if( odiv ) {	
		omenu.State = 1;

		if ( odivh ) {
			for ( var i=0; odivh.childNodes[i]; i++ ) {
				var c=odivh.childNodes[i];
				if ( (""+c.nodeName).toLowerCase() == 'a' ) {
					c.className = 'collapse';
				}
			}
		}
		var vz = (1000*omenu.Depth)+omenu.Id;
		odiv.style.zIndex = vz;
		odiv.innerHTML = mkMenu(omenu);
		odiv.style.display = "block";
		if( oifsh ) {
			oifsh.style.zIndex=vz-1;
			oifsh.style.left=2+parseInt(odiv.style.left)+"px";
			oifsh.style.top="2px";//odiv.style.top;
			oifsh.style.width=2+parseInt(odiv.style.width)+"px";
			oifsh.style.height=(odiv.offsetHeight-2)+"px";
			oifsh.style.display="block";
		}
	} else {
		if(odivh) {
			var vz = (1000*omenu.Depth)+omenu.Id;
			odivh.style.zIndex = vz;
		}
	}
}
function menuclose( smenu )
{
	if(smenu==menuItem.prototype.MenuClosing) return;
	if(smenu==menuItem.prototype.MenuOpening) {
		stopmenuopen();
		return;
	}
	stopmenuclose();
	log("closing menu " + smenu);
	menuItem.prototype.MenuClosing = smenu;
	menuItem.prototype.MenuTimerId = window.setTimeout( "domenuclose(\""+smenu+"\",-1)", 3000 );
}
function domenuclose( smenu, cascade )
{
	var omenu, odiv, odivh, oanch, oifsh;
	omenu = getMenu(smenu);
	odiv = document.getElementById("Menu"+omenu.fullname()+"Pane");
	odivh = document.getElementById("Menu"+omenu.fullname()+"Head");
	oifsh = document.getElementById("Menu"+omenu.fullname()+"Shim");
	if( smenu == menuItem.prototype.MenuClosing ) stopmenuclose();
	
	omenu.State = 0;
	if( odiv )  {
		if(odivh) odivh.innerHTML = "<A HREF=\""+omenu.LinkUrl+"\""+( 0 < omenu.ItemCount ? " CLASS=\"expand\"" : "")+ ">" + omenu.Name + "</A>";
		odiv.innerHTML = mkMenu(omenu);
		//odiv.style.zIndex = 0;
		odiv.style.display = "none";
		if(oifsh) {
			oifsh.style.display="none";
		}
	}
	menuItem.prototype.MenuNowOpen = "";
	menuItem.prototype.MenuClosing = "";
	log("closed menu " + smenu);
	if( -1 == cascade ) { cascade = omenu.Depth-1; } //alert(cascade); }
	if( 0 < cascade ) domenuclose(omenu.Root,cascade-1);
}
function stopmenuclose()
{
	if( 0 < menuItem.prototype.MenuTimerId ) {
		window.clearTimeout( menuItem.prototype.MenuTimerId );
		log("stopped menu " + menuItem.prototype.MenuClosing + " from closing");
		menuItem.prototype.MenuTimerId = 0;
		menuItem.prototype.MenuClosing = "";
	}
}
function stopmenuopen()
{
	if( 0 < menuItem.prototype.MenuOpenTimerId ) {
		window.clearTimeout( menuItem.prototype.MenuOpenTimerId );
		log("stopped menu " + menuItem.prototype.MenuOpening + " from opening");
		menuItem.prototype.MenuOpenTimerId = 0;
		menuItem.prototype.MenuOpening = "";
	}
}
function onSubMenu(smenu)
{
	if( 0 < menuItem.prototype.MenuClosing.length )  {
		var sClosing = menuItem.prototype.MenuClosing;
		if( smenu == sClosing ) { stopmenuclose(); return; }
		if( smenu.length >= sClosing.length && sClosing == smenu.substring(0,sClosing.length) ) // sClosing is a parent
			stopmenuclose();
	}
	log("onsub: "+smenu);return;
	//domenuopen(smenu);
}
function offSubMenu(smenu)
{
	log("offsub: "+smenu+", Closing:"+menuItem.prototype.MenuClosing+", Opening:"+menuItem.prototype.MenuOpening);
	menuItem.prototype.MenuOpening="";
	menuclose(smenu);
}
function mkMenuLine(omenu)
{
	var sret = new String(), omin, omex, sclass = (0==omenu.Depth?"menu":"popmenu");
	var vz = (1000*omenu.Depth)+omenu.Id;
	sret += "<DIV CLASS=\""+sclass+"x\" ID=\"Menu"+omenu.fullname()+"All\" STYLE=\"position: relative; z-index: "+vz+";\">";
	if( 0 < omenu.ItemCount )  {
		omin = " onmouseover=\"menuopen('"+omenu.fullname()+"')\"";
		omex = " onmouseout=\"menuclose('"+omenu.fullname()+"')\"";
	}  else  {
		omin = " onmouseover=\"menuopen('"+omenu.Root+"')\"";
		omex = " onmouseout=\"menuclose('"+omenu.Root+"')\"";
	}
	sret += "<DIV CLASS=\"menuslot\" ID=\"Menu"+omenu.fullname()+"Head\"" + omin + omex + " STYLE=\"position: relative; z-index: "+vz+";\">";
	sret += "<A HREF=\""+omenu.LinkUrl+"\""+ ( 0 < omenu.ItemCount ? " CLASS=expand" : "" ) + ">" + omenu.Name + "</A>";
	sret += "</DIV>";
	if( 0 < omenu.ItemCount ) {
		sret += "<DIV ID=\"Menu"+omenu.fullname()+"Pane\" CLASS=\""+sclass+"\" onmouseover=\"onSubMenu('"+omenu.fullname()+"')\" onmouseout=\"offSubMenu('"+omenu.fullname()+"')\" STYLE=\"border: inset black 2px; background-color: #a2b8d0; position: absolute; width: "+omenu.Width+"px; top: "+omenu.Top+"px; left: "+(omenu.Left)+"px; display: none;\">";
		// uncomment following if you want to try "inlining" the whole menu on menu creation
		//for(var vi=0;vi<omenu.ItemCount;vi++ )
		//	sret += mkMenu(omenu.Items[vi]);
		sret += "</DIV>";
		//if(isIE) /// still not sure if we should only do this in IE
			sret += "<IFRAME ID=\"Menu"+omenu.fullname()+"Shim\" style=\"DISPLAY: none; position: absolute; left: "+(omenu.Left)+"px; width: "+(omenu.Width+2)+"px; z-index: "+(vz-1)+"\" src=\"javascript:false;\" frameBorder=\"0\" scrolling=\"no\"></IFRAME>";
	}
	sret += "</DIV>";
	return sret;
}
function mkMenu(omenu)
{
	var i, sret = new String(), stmp;

	if( false && 0 == omenu.Root.length )
		sret = "\r\n<a href=\"#\" onclick=\"menuflip("+omenu.Id+")\" onMouseOut=\"MM_swapImgRestore()\" onMouseOver=\"MM_swapImage('"+omenu.Token+"','','/img/english/nav_"+omenu.Token+"_on.gif',0)\"><img src=\"/img/english/nav_"+omenu.Token+"_off.gif\" alt=\""+omenu.AltText+"\" name=\""+omenu.Token+"\" width=\"123\" height=\"28\" border=\"0\"></a>";
	if( !omenu.State || !omenu.ItemCount ) return sret;
	for( i = 0; i < omenu.ItemCount; i++ )
		sret += mkMenuLine(omenu.Items[i]);
			
	return sret;
}



