var submenus = [];function Submenu(name,dropdown_id,callout_id){	this.name = name;	this.elements = {dropdown:$(dropdown_id),callout:$(callout_id)};	this.children = {};	this.delay = 0.5;	this.timeout = false;	this.n = submenus.length;	submenus[this.n] = this;	this.verify = function(n){		var self = submenus[n];		if(!self||!self.elements) return false;		for(var e in self.elements){			if(!self.elements[e]) return false;		}		return true;	};	this.show = function(n,parent_id){		var self = submenus[n];		if(!self) return false;		if(!parent_id||(parent_id!==true&&typeof(self.children[parent_id])=="undefined")){			if(self.timeout) clearTimeout(self.timeout);			self.timeout = setTimeout(self.name+".clear("+n+")",self.delay*1000);			return false;		}		if(self.timeout) clearTimeout(self.timeout);		self.timeout = false;		if(parent_id===true||typeof(self.children[parent_id])=="undefined") return false;		if(typeof(self.children[parent_id]["node"])!="undefined"){			self.clear(n);			self.elements["dropdown"].update(self.children[parent_id]["node"].innerHTML);			self.elements["dropdown"].show();			self.elements["callout"].show();			self.position(n,parent_id);		}else{			self.buildChild(n,parent_id);			self.show(n,parent_id);		}	};	this.clear = function(n){		var self = submenus[n];		if(!self) return false;		self.elements["dropdown"].hide();		self.elements["callout"].hide();	};	this.position = function(n,parent_id){		var self = submenus[n];		if(!self) return false;		var parent = $(parent_id);		if(!parent) return false;		if(self.children[parent_id]&&self.children[parent_id]["nodecount"]>0){			var div = $(parent.parentNode.parentNode.parentNode.parentNode.parentNode);			var td = $(parent.parentNode);			var offset1 = div.cumulativeOffset();			var offset2 = td.cumulativeOffset();			if(td.hasClassName('last')){				self.elements["dropdown"].setStyle({top:(offset1[1]+div.getHeight())+"px",left:(offset2[0]+td.getWidth()-self.elements["dropdown"].getWidth())+"px"});				self.elements["callout"].setStyle({top:(offset1[1]+div.getHeight()-self.elements["callout"].getHeight())+"px",left:(offset2[0]+td.getWidth()-self.elements["callout"].getWidth()-25)+"px"});			}else{				self.elements["dropdown"].setStyle({top:(offset1[1]+div.getHeight())+"px",left:offset2[0]+"px"});				self.elements["callout"].setStyle({top:(offset1[1]+div.getHeight()-self.elements["callout"].getHeight())+"px",left:(offset2[0]+25)+"px"});			}		}else{			self.clear(n);		}	};	this.addChild = function(n,parent_id,items){		var self = submenus[n];		if(!self) return false;		self.children[parent_id] = items;		var n = 0;		for(var i in self.children[parent_id]) n++;		self.children[parent_id]["nodecount"] = n;	};	this.buildChild = function(n,parent_id){		var self = submenus[n];		if(!self) return false;		if(!self.children[parent_id]) return false;		var div = new Element('div');		var last = false;		for(var i in self.children[parent_id]){			if(i=="node"||i=="nodecount") continue;			var a = new Element('a',{href:self.children[parent_id][i],onmouseover:self.name+".show("+n+",true)",onmouseout:self.name+".show("+n+",false)"});			last = a;			a.update(i);			div.insert(a);		}		if(last) last.addClassName("last");		self.children[parent_id]["node"] = div;	};}
