//////////////////////////////////////////////////////////////////////
//* TransMenus version 0.9 by A. Heinrich http://www.archomai.org  *// 
//////////////////////////////////////////////////////////////////////

//Namespacing//

if (!org) {
  var org = {} ;
  org.archomai = {} ;
  org.archomai.transMenus = {};
} else if (!org.archomai) {
    org.archomai = {};
    org.archomai.transMenus = {};
} else {
   org.archomai.transMenus = {};
}
var ns = org.archomai.transMenus;

//////////////////////////////////////////////////////
/////COLLAPSIBLE MENU BULLET IMAGE SOURCES - PUBLIC///
//////////////////////////////////////////////////////
ns.collapsibleMenuImages = 
{
	openImage : "http://www.archomai.org/images/minus.gif" ,
	closedImage : "http://www.archomai.org/images/plus.gif"
}


///////////////////////////////////////////////
///////////////////////////////////////////////

ns.standards = (document.getElementById && 
    		document.getElementsByTagName);
ns.MenuRegistry = {} ;
ns.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");
	ns.MenuRegistry[this.id] = this;
	this.Hide = function() {
		if (this.timerId) this.timerId = window.clearTimeout(this.timerId);
		if (this.isOpen) {
			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('ns.MenuRegistry[\"' + this.id + '\"].ScheduleHide()')");
			this.inLimbo = false;
		}		
		if (this.timerId) {
			this.timerId = window.clearTimeout(this.timerId);
		}
		if (!this.isOpen) {
			for (var i in ns.MenuRegistry)  {
				var qualified = true;
				if (ns.MenuRegistry[i].id == this.id) qualified = false
				else if (this.ancestorMenuIds.length>0) {
					for (var j = 0; j < this.ancestorMenuIds.length; j++) {
						if (ns.MenuRegistry[i].id == this.ancestorMenuIds[j]) qualified = false;				
					}
				}
				if (qualified) ns.MenuRegistry[i].Hide();
			}
			this.isOpen = true;
			this.inLimbo = true;
			this.menuElement.style.visibility = "visible";
			this.menuElement.onmouseover = new Function("eval('ns.MenuRegistry[\"' + this.id + '\"].HandleMouseOver()')");	
		}
  	}
	this.HandleMouseDown = function() {
		if (this.menuElement.style.display == "none") {
			this.menuElement.style.display = "block";
			this.menuElement.parentNode.style.listStyleImage = 'url(' + ns.collapsibleMenuImages.openImage + ')';
		} else {
			this.menuElement.style.display = "none";
			this.menuElement.parentNode.style.listStyleImage = 'url(' + ns.collapsibleMenuImages.closedImage + ')';
		}
	}	
} ;
ns.ShowMenu = function(e)
{ 
	var eventTarget = (document.all) ? event.srcElement : e.target;//.parentNode
	if (eventTarget.subMenu) ns.MenuRegistry[eventTarget.subMenu].HandleMouseOver();
} ;
ns.HideMenu = function(e) 
{
	var eventTarget = (document.all) ? event.srcElement : e.target.parentNode;
	if (eventTarget.subMenu) ns.MenuRegistry[eventTarget.subMenu].ScheduleHide();
} ;
ns.ExpandMenu = function(e) 
{
	var eventTarget = (document.all) ? event.srcElement : e.target;
	if (eventTarget.subMenu) {
		ns.MenuRegistry[eventTarget.subMenu].HandleMouseDown();
		if (document.all) event.cancelBubble = true;
		if (e && !document.all) e.stopPropagation();
	}
} ;
ns.MenuSetup = function() 
{
	ns.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.visibility = "hidden";
			new ns.Menu(ListArray[i].id);
			if (ListArray[i].parentNode.parentNode.className == "popUpMenu") {
				ns.MenuRegistry[ListArray[i].id].ancestorMenuIds[0] = ListArray[i].parentNode.parentNode.id;
				ns.MenuRegistry[ListArray[i].id].ancestorMenuIds = ns.MenuRegistry[ListArray[i].id].ancestorMenuIds.concat(ns.MenuRegistry[ListArray[i].parentNode.parentNode.id].ancestorMenuIds)		
			}
			var triggerElement = (ListArray[i].parentNode.firstChild.nodeType == 3) ? ListArray[i].parentNode : ListArray[i].parentNode.firstChild;
			//triggerElement.style.cursor = "pointer";
			triggerElement.subMenu = ListArray[i].id;
			if (triggerElement.addEventListener) {
				triggerElement.addEventListener("mouseover",ns.ShowMenu,false);
				triggerElement.addEventListener("mouseout",ns.HideMenu,false);
			} else if (triggerElement.attachEvent) {
				triggerElement.attachEvent("onmouseover",ns.ShowMenu);
				triggerElement.attachEvent("onmouseout",ns.HideMenu);
			}
		} else if (ListArray[i].className == "collapsibleMenu") {
			if (!ListArray[i].id) {ListArray[i].id = "Menu_" + j; j++ }
			new ns.Menu(ListArray[i].id);
			ListArray[i].style.display = "none";
			var triggerElement = ListArray[i].parentNode;
			//triggerElement.style.cursor = "pointer";
			triggerElement.subMenu = ListArray[i].id;
			triggerElement.style.listStyleImage = 'url(' + ns.collapsibleMenuImages.closedImage + ')';
			if (triggerElement.addEventListener) {
				triggerElement.addEventListener("click",ns.ExpandMenu,false);
			} else if (triggerElement.attachEvent) {
				triggerElement.attachEvent("onclick",ns.ExpandMenu);
			}
		} else continue;
  	}
	ns.SMDTimeout = window.setTimeout("ns.SetMenusDisplay()",1000);
} ;
ns.SetMenusDisplay = function() 
{
	if (ns.SMDTimeout) window.clearTimeout(ns.SMDTimeout);
	for (i in ns.MenuRegistry) {
		var trigger = ns.MenuRegistry[i].menuElement.parentNode;
		var offParLeft = (trigger.offsetParent) ? trigger.offsetParent.offsetLeft : 0;
		var offParTop = (trigger.offsetParent) ? trigger.offsetParent.offsetTop : 0;
		var x, y;
		if (trigger.parentNode.className == "popUpMenu") {
			x = trigger.offsetLeft + trigger.parentNode.offsetWidth - 100;
			y = trigger.offsetTop;
		} else {
			//x = trigger.offsetLeft + offParLeft;
			x = trigger.offsetLeft + trigger.parentNode.offsetWidth - 740; //parche
			y = trigger.offsetTop + trigger.offsetHeight + offParTop + 7;
		}
		ns.MenuRegistry[i].menuElement.style.left = x + "px";
		ns.MenuRegistry[i].menuElement.style.top = y + "px";
	}
} ;
ns.SetStylesheet = function() 
{
	var sheets = document.getElementsByTagName("LINK");
	for (var i=0;i<sheets.length;i++) {
		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 (ns.standards) 
{
	if (window.addEventListener) {
		window.addEventListener("load",ns.MenuSetup,true);
		window.addEventListener("resize",ns.SetMenusDisplay,true);
	} else if (window.attachEvent){
		window.attachEvent("onload",ns.MenuSetup);
		window.attachEvent("onresize",ns.SetMenusDisplay);
	}
}
//-->
