
var cssdropdown = {

	disappeardelay : 1000, //set delay in miliseconds before menu disappears onmouseout
	dropmenuobj : null,
	ie : document.all,
	firefox	: document.getElementById && !document.all,

	getposOffset : function(what, offsettype) {

		var totaloffset	= (offsettype == "left") ? what.offsetLeft : what.offsetTop;
		var parentEl	= what.offsetParent;

		while (parentEl != null) {

			totaloffset 	= (offsettype=="left") ? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop;
			parentEl	= parentEl.offsetParent;
		}
		
		return totaloffset;
	},

	showhide : function(obj, e, visible, hidden) {

		if (this.ie || this.firefox) {
		
			this.dropmenuobj.style.left = this.dropmenuobj.style.top = "-500px"
		}
		
		if (e.type == "click" && obj.visibility == hidden || e.type == "mouseover") {

			obj.visibility = visible;
			
		} else if (e.type=="click") {
		
			obj.visibility = hidden;
		}
	},

	iecompattest : function() {

		return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
	},

	clearbrowseredge : function(obj, whichedge) {
	
		var edgeoffset=0;
		
		if (whichedge == "rightedge") {
		
			var windowedge = this.ie && !window.opera ? this.iecompattest().scrollLeft + this.iecompattest().clientWidth - 15 : window.pageXOffset + window.innerWidth - 15;

			this.dropmenuobj.contentmeasure = this.dropmenuobj.offsetWidth;

			if (windowedge - this.dropmenuobj.x < this.dropmenuobj.contentmeasure) { //move menu to the left?
				
				edgeoffset = this.dropmenuobj.contentmeasure - obj.offsetWidth;
			
			} else {

				var topedge 	= this.ie && !window.opera ? this.iecompattest().scrollTop : window.pageYOffset;
				var windowedge	= this.ie && !window.opera ? this.iecompattest().scrollTop + this.iecompattest().clientHeight - 15 : window.pageYOffset + window.innerHeight - 18;

				this.dropmenuobj.contentmeasure = this.dropmenuobj.offsetHeight;

				if (windowedge - this.dropmenuobj.y < this.dropmenuobj.contentmeasure) { //move up?
					
					edgeoffset = this.dropmenuobj.contentmeasure + obj.offsetHeight;

					if ((this.dropmenuobj.y - topedge) < this.dropmenuobj.contentmeasure) { //up no good either?
						
						edgeoffset = this.dropmenuobj.y + obj.offsetHeight - topedge;
					}
				}
			}
		}
		
		return edgeoffset;
	},

	dropit : function(obj, e, dropmenuID, left_pos, top_pos, width) {
	
		if (this.dropmenuobj != null) { //hide previous menu

			this.dropmenuobj.style.visibility = "hidden";
		}
		
		this.clearhidemenu();
		
		if (this.ie || this.firefox) {

			obj.onmouseout = function() { 
			
				cssdropdown.delayhidemenu();
			};
			
			this.dropmenuobj = document.getElementById(dropmenuID);

			this.dropmenuobj.onmouseover = function() { 
			
				cssdropdown.clearhidemenu();
			};
			
			this.dropmenuobj.onmouseout = function() { 
			
				cssdropdown.dynamichide(e);
			};
			
			this.dropmenuobj.onclick = function() { 
			
				cssdropdown.delayhidemenu();
			};
			
			this.showhide(this.dropmenuobj.style, e, "visible", "hidden");
			
			this.dropmenuobj.x = this.getposOffset(obj, "left");
			this.dropmenuobj.y = this.getposOffset(obj, "top");
			
			this.dropmenuobj.style.width = width+"px";
			this.dropmenuobj.style.left = left_pos + (this.dropmenuobj.x - ((this.firefox) ? 0 : 0)) - this.clearbrowseredge(obj, "rightedge") + "px";
			this.dropmenuobj.style.top  = ((this.firefox | window.opera) ? top_pos + 50 : top_pos) - (this.dropmenuobj.y - ((this.firefox) ? 1 : 1)) - this.clearbrowseredge(obj, "bottomedge") + (obj.offsetHeight+1) + "px";
		}
	},

	contains_firefox : function(a, b) {

		while (b.parentNode) {
		
			if ((b = b.parentNode) == a) {
			
				return true;
			}
		}
		
		return false;
	},

	dynamichide : function(e) {

		var evtobj = window.event ? window.event : e;
		
		if (this.ie && !this.dropmenuobj.contains(evtobj.toElement)) {
		
			this.delayhidemenu();
			
		} else if (this.firefox && e.currentTarget != evtobj.relatedTarget && !this.contains_firefox(evtobj.currentTarget, evtobj.relatedTarget)) {
		
			this.delayhidemenu();
		}
	},

	delayhidemenu : function() {
	
		this.delayhide = setTimeout("cssdropdown.dropmenuobj.style.visibility = 'hidden'",this.disappeardelay);
	},

	clearhidemenu : function() {
	
		if (this.delayhide!="undefined") {
		
			clearTimeout(this.delayhide);
		}
	}
}

var img = {

	hover : function (img_name, img)
	{
	
		eval('document.' + img_name).src = img;
	}
}