//////////////////////////////////////////////////////////////////////
//* TransMenus version 0.9.2 by A. Heinrich http://www.archomai.org  *// 
////////////////////////////////////////////////////////////////////// 
if (!org) {
  var org = {} ;
  org.archomai = {} ;
  org.archomai.transMenus = {};
} else if (!org.archomai) {
    org.archomai = {};
    org.archomai.transMenus = {};
} else {
   org.archomai.transMenus = {};
}
//////////////////////////////////////////////////////
///POPUP MENU SUBMENU OFFSETS IN PIXELS- PUBLIC///////
///NUMBER OF PIXELS SUBMENUS WILL BE OFFSET FROM////// 
///THEIR DEFAULT POSITION/////////////////////////////
//////////////////////////////////////////////////////
org.archomai.transMenus.relativeOffsetLeft = -4;
org.archomai.transMenus.relativeOffsetTop = 0;

///////////////////////////////////////////////
///////////////////////////////////////////////

org.archomai.transMenus.standards = (document.getElementById && 
    		document.getElementsByTagName);
org.archomai.transMenus.MenuRegistry = {} ;
org.archomai.transMenus.Menu = function(id)  
{
	this.id = id;
	this.menuElement = document.getElementById(id);
	this.timerId = null;
	this.isOpen = false;
	this.inLimbo = false;
	this.ancestorMenuIds = new Array();
	this.childrenMenuIds = new Array();
	this.gRef = this.id + "_Menu";
	eval(this.gRef + "=this");
	this.baseUL = null;
	org.archomai.transMenus.MenuRegistry[this.id] = this;
	this.Hide = function() {
		if (this.timerId) this.timerId = window.clearTimeout(this.timerId);
		if (this.isOpen) {
			this.menuElement.style.display = "none";
			this.menuElement.style.visibility = "hidden";
			this.isOpen = false;
		}
	}
	this.ScheduleHide = function() {
		if (this.timerId) this.timerId = window.clearTimeout(this.timerId);
		this.timerId = window.setTimeout(this.gRef + ".Hide()",500);
	}
	this.HandleMouseOver = function() {
		if (this.inLimbo) {
			this.menuElement.onmouseout = new Function("eval('org.archomai.transMenus.MenuRegistry[\"' + this.id + '\"].ScheduleHide()')");
			this.inLimbo = false;
		}		
		if (this.timerId) {
			this.timerId = window.clearTimeout(this.timerId);
		}
		
	       this.inLimbo = true;
	       this.menuElement.onmouseover = new Function("eval('org.archomai.transMenus.MenuRegistry[\"' + this.id + '\"].HandleMouseOver()')");	
		
	 }
	
	 this.HandleMouseDown = function() {
		if (this.inLimbo) {
			this.menuElement.onmouseout = new Function("eval('org.archomai.transMenus.MenuRegistry[\"' + this.id + '\"].ScheduleHide()')");
			this.inLimbo = false;
		}		
		if (this.timerId) {
			this.timerId = window.clearTimeout(this.timerId);
		}
		if (!this.isOpen) {
			for (var i in org.archomai.transMenus.MenuRegistry)  {
				var qualified = true;
				if (org.archomai.transMenus.MenuRegistry[i].id == this.id) qualified = false
				else if (this.ancestorMenuIds.length>0) {
					for (var j = 0; j < this.ancestorMenuIds.length; j++) {
						if (org.archomai.transMenus.MenuRegistry[i].id == this.ancestorMenuIds[j]) qualified = false;				
					}
				}
				if (qualified) org.archomai.transMenus.MenuRegistry[i].Hide();
			}
			this.isOpen = true;
			this.inLimbo = true;
			this.setMenuDisplay();
			this.menuElement.onmousedown = new Function("eval('org.archomai.transMenus.MenuRegistry[\"' + this.id + '\"].HandleMouseDown()')");	
		}
  	}	

	this.setMenuDisplay = function() {
		var trigger = this.menuElement.parentNode; 
		var x, y;
		if (trigger.parentNode.className == "popUpMenu") {
			x = trigger.offsetLeft + trigger.parentNode.offsetWidth + org.archomai.transMenus.relativeOffsetLeft;
			y = trigger.offsetTop + org.archomai.transMenus.relativeOffsetTop;
		} else {
			var masterOffsetX = 0;
			var masterOffsetY = 0;
			var tempEl = trigger;
			while (tempEl.offsetParent != null) {
				masterOffsetX += tempEl.offsetLeft;
				masterOffsetY += tempEl.offsetTop;
				tempEl = tempEl.offsetParent;
			}
			x = (document.all) ? (document.body.offsetLeft + masterOffsetX) : masterOffsetX;
			y = (document.all) ? (document.body.offsetTop + masterOffsetY) : masterOffsetY; 
			y += trigger.parentNode.offsetHeight;
		}
		this.menuElement.style.left = x + "px";
		this.menuElement.style.top = y + "px";
		this.menuElement.style.display = "block";
		this.menuElement.style.visibility = "visible";
	}
} ;
org.archomai.transMenus.OverMenu = function(e)
{
	var eventTarget = (document.all) ? event.srcElement : e.target;
	eventTarget = (eventTarget.subMenu) ? eventTarget : eventTarget.parentNode;
	if (eventTarget.subMenu) org.archomai.transMenus.MenuRegistry[eventTarget.subMenu].HandleMouseOver();
} ;
org.archomai.transMenus.ShowMenu = function(e)
{
	var eventTarget = (document.all) ? event.srcElement : e.target;
	eventTarget = (eventTarget.subMenu) ? eventTarget : eventTarget.parentNode;
	if (eventTarget.subMenu) org.archomai.transMenus.MenuRegistry[eventTarget.subMenu].HandleMouseDown();
} ;
org.archomai.transMenus.HideMenu = function(e) 
{
	var eventTarget = (document.all) ? event.srcElement : e.target;
	eventTarget = (eventTarget.subMenu) ? eventTarget : eventTarget.parentNode;
	if (eventTarget.subMenu) org.archomai.transMenus.MenuRegistry[eventTarget.subMenu].ScheduleHide();
} ;
org.archomai.transMenus.MenuSetup = function() 
{
	org.archomai.transMenus.SetStylesheet();
	var ListArray = document.getElementsByTagName("UL");
	var j = 0;
	for (var i=0;i<ListArray.length;i++) {
		if (ListArray[i].className == "popUpMenu") {
			if (!ListArray[i].id) {ListArray[i].id = "Menu_" + j; j++ }
			ListArray[i].style.position = "absolute";
			ListArray[i].style.display = "none";
			new org.archomai.transMenus.Menu(ListArray[i].id);
			if (ListArray[i].parentNode.parentNode.className == "popUpMenu") {
				org.archomai.transMenus.MenuRegistry[ListArray[i].id].ancestorMenuIds[0] = ListArray[i].parentNode.parentNode.id;
				org.archomai.transMenus.MenuRegistry[ListArray[i].id].ancestorMenuIds = org.archomai.transMenus.MenuRegistry[ListArray[i].id].ancestorMenuIds.concat(org.archomai.transMenus.MenuRegistry[ListArray[i].parentNode.parentNode.id].ancestorMenuIds)		
			}
			if (ListArray[i].parentNode.parentNode.className != "popUpMenu") org.archomai.transMenus.MenuRegistry[ListArray[i].id].baseUL = ListArray[i].parentNode.parentNode;
			var triggerElement = (ListArray[i].parentNode.firstChild.nodeType == 3) ? ListArray[i].parentNode : ListArray[i].parentNode.firstChild;
			if (triggerElement.style.cursor) triggerElement.style.cursor = "pointer";
			triggerElement.subMenu = ListArray[i].id;
			if (triggerElement.addEventListener) {
				triggerElement.addEventListener("mousedown",org.archomai.transMenus.ShowMenu,false);
				triggerElement.addEventListener("mouseover",org.archomai.transMenus.OverMenu,false);
				triggerElement.addEventListener("mouseout",org.archomai.transMenus.HideMenu,false);
			} else if (triggerElement.attachEvent) {
				triggerElement.attachEvent("onmousedown",org.archomai.transMenus.ShowMenu);
				triggerElement.attachEvent("onmouseover",org.archomai.transMenus.OverMenu);
				triggerElement.attachEvent("onmouseout",org.archomai.transMenus.HideMenu);
			}
		} else continue;
  	}
} ;
org.archomai.transMenus.SetStylesheet = function() 
{
	var sheets = document.getElementsByTagName("LINK");
	for (var i=0;i<sheets.length;i++) {
	    if (sheets[i].getAttribute("TITLE") != null) {
            
                if (sheets[i].getAttribute("REL").toUpperCase().indexOf("STYLE")>-1 && 
		    sheets[i].getAttribute("TITLE").toUpperCase().indexOf("DEFAULT")>-1) {
			sheets[i].disabled = true;
		} else if (sheets[i].getAttribute("REL").toUpperCase().indexOf("ALT")>-1 && 
		    sheets[i].getAttribute("TITLE").toUpperCase().indexOf("EXTENDED")>-1) {
			if (document.all) {
				var link = document.createElement('link'); 
				link.rel = "stylesheet"; 
				link.type = "text/css"; 
				link.href = sheets[i].getAttribute("HREF"); 
				var head = document.getElementsByTagName('head')[0]; 
				head.appendChild(link);
			} else {
				sheets[i].disabled = false;
			}
		}
	    }
	}
};
if (org.archomai.transMenus.standards) 
{
	if (window.addEventListener) {
		window.addEventListener("load",org.archomai.transMenus.MenuSetup,true);
	} else if (window.attachEvent){
		window.attachEvent("onload",org.archomai.transMenus.MenuSetup);
	}
}

var xcNode = [];

function xcSet(m, c) {

   var divPopUp = document.getElementById("popUp");
   if (divPopUp) { divPopUp.style.visibility="visible"; divPopUp.style.display="block";}
    
    if ((document.getElementById(m) != null) && (navigator.userAgent.indexOf('MSIE 5.2') == -1 || navigator.userAgent.indexOf('Mac') == -1)) {
        if (document.getElementById && document.createElement) {
            m = document.getElementById(m).getElementsByTagName('ul');
            var d, p, x, h, i, j;
            for (i = 0; i < m.length; i++) {
                d = m[i].getAttribute('id');
                if (d) {
                    var plus = siteRoot+'/../resources/static/images/common/plus.gif';
                    var minus = siteRoot+'/../resources/static/images/common/minus.gif';
                    x = xcCtrl(d, c, 'x', plus, true, (m[i].getAttribute('title') ? m[i].getAttribute('title')+' ' : '')+'(expand menu)');
                    x = xcCtrl(d, c, 'c', minus, false, (m[i].getAttribute('title') ? m[i].getAttribute('title')+' ' : '')+'(collapse menu)');

                    p = m[i].parentNode;
                    if (h = !p.className) {
                        j = 2;
                        while ((h = !(d == arguments[j])) && (j++ < arguments.length));
                        if (h) {
                            m[i].style.display = 'none';
                            x = xcNode[d+'x'];
			}
                    }
                    p.className = c;
                    p.insertBefore(x, p.firstChild);
                }
            }
        }	
    }
    
   var z = document.getElementById('a' + arguments[2]);
   if (z) {
    z.className = 'highlight';
    var href=z.getAttribute("href"); // in IE this is converted to absolute already
    if (href=="" || href.charAt(href.length-1)=='/') z.removeAttribute('href');
   }
}


function xcShow(m) {
	xcXC(m, 'block', m+'c', m+'x');
}

function xcHide(m) {
	xcXC(m, 'none', m+'x', m+'c');
}

function xcXC(e, d, s, h) {
	e = document.getElementById(e);
	e.style.display = d;
	e.parentNode.replaceChild(xcNode[s], xcNode[h]);
	xcNode[s].firstChild.focus();
}

function xcCtrl(m, c, s, v, f, t) {
	var i = document.createElement('img');
	i.setAttribute('src', v);
	i.setAttribute('border', '0');
	i.setAttribute('title', t);
	i.onclick=xcCollapserClick;
	i.actionShow=f;
	i.menuID=m;
	var d = document.createElement('div');
	d.className = c+s;
	d.appendChild(i);
	return xcNode[m+s] = d;
}

function xcCollapserClick() {
	this.actionShow ? xcShow(this.menuID) : xcHide(this.menuID);
}