/*
	JavaScript Document
	Author: Alex Platt
	Create fadeIn dropdown menus
	Use:
	   addDropToElement("dropDivId","navbarLinkId"); //instant
	   
*/


	var modrop = Array();
	var lastDropId = "";
	var lastNavId = "";
	var tout = null;
	var lastSubDrop = "";
	var m_over_sub = false;
	

	function addListener(element, event, listener, bubble) {
	  if(element.addEventListener) {
		if(typeof(bubble) == "undefined") bubble = false;
		element.addEventListener(event, listener, bubble);
	  } else if(this.attachEvent) {
		element.attachEvent("on" + event, listener);
	  }
	}
	
	function removeListener(element, event, listener, bubble) {
	  if(element.removeEventListener) {
		if(typeof(bubble) == "undefined") bubble = false;
		element.removeEventListener(event, listener, bubble);
	  } else if(this.detachEvent) {
		element.detachEvent("on" + event, listener);
	  }
	}
	
	function cancelEvent( e ) {
		    if (e && e.preventDefault) e.preventDefault();
			if (window.event != null) window.event.returnValue = false;
			return false;
	}
	
	function findPos(obj) {
	    var curleft = curtop = 0;
        if (obj.offsetParent) {
            do {
			    curleft += obj.offsetLeft;
			    curtop += obj.offsetTop;
            } while (obj = obj.offsetParent);
	    }
        return [curleft,curtop];
    }
	
	function getElementHeight(Elem) {
	
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		
		xPos = elem.offsetHeight;
		
		return xPos;
	 
	}
	
	function getElementWidth(Elem) {
	
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		
		xPos = elem.offsetWidth;
		
		return xPos;
	 
	}
	

	
	function showDrop( dropId, anchorId ) {
		 drop = document.getElementById(dropId);
		 nav = document.getElementById(anchorId);
		 nav.setAttribute('rel','selected');
		 
		 if (dropId != lastDropId) { 
			 if (lastDropId != "")  hideDrop(lastDropId); 
			 lastDropId = dropId;	 
		 }
		 
		 if (anchorId != lastNavId) {
			 if (lastNavId != "") document.getElementById(lastNavId).setAttribute("rel","");
			 lastNavId = anchorId;
		 }
		
	     var coord = findPos(nav);
		 drop.style.left = coord[0] + "px";
		 drop.style.top = (coord[1] + getElementHeight(anchorId)) + "px";
		 if (drop.style.display == "none") {
			 fadeIn = new OpacityTween(drop,Tween.regularEaseIn, 0, 100, 0.5);
			 fadeIn.start();								   
			 drop.style.display = "block";
			
		 }
		 
	}
	
	
	
	
	
	function hideDrop( dropId, navId ) {
		 if (modrop[dropId] == false) {
	     	var drop = document.getElementById(dropId);
		 	
			fadeIn = new OpacityTween(drop,Tween.regularEaseIn, 100, 0, 0.2);
			fadeIn.start();								   
			fadeIn.onMotionFinished = function () {
				drop.style.display = "none";
			}
			var nav = document.getElementById(navId);
		    if (nav != null) {	nav.setAttribute('rel',''); }

			
		 }
		 
		 if ((lastSubDrop != "") && (lastDrop == dropId)) {
		     hideSubDrop(lastSubDrop);
			 lastDrop = "";
			 lastSubDrop = "";
		 }
		 
	}
	
	function addDropToElement( dropId, anchorId) {
	     var drop = document.getElementById(dropId);
		 nav = document.getElementById(anchorId);
		 
		 drop.style.display = "none";
		 
		 
		 var m_on_drop = false;
		 modrop[dropId] = false;
	 
	     addListener(nav,"mouseover", function (e) {
			   if ( (lastSubDrop != "") ) {
					 hideSubDrop(lastSubDrop);
			   }
			   
			   if (tout != null)  {
				  clearTimeout(tout);
			   }
			   
		       showDrop(dropId, anchorId);
			   
		 });
		 
		 addListener(nav,"mousemove", function (e) {
		      if (drop.style.display == "none") {
		         showDrop(dropId, anchorId);
			  }
		 });
		 
		 addListener(nav,"mouseout", function (e) {
			  tout = setTimeout("hideDrop('" + dropId + "','" + anchorId + "');",500); 	 
		 });
		
		 
		 
		 addListener(drop,"mouseout", function (e) {
		     if (m_on_drop == true) {
			     m_on_drop = false;
				 modrop[dropId] = false;
				 tout = setTimeout("hideDrop('" + dropId + "','" + anchorId + "');",500); 	 
			 }
		 });
		 
		 addListener(drop,"mousemove", function (e) {
		     if ( (tout != null) || (m_on_drop == false) ) {
				clearTimeout(tout);
			 }
			 m_on_drop = true;
			 modrop[dropId] = true;
			 showDrop(dropId, anchorId);
			 
		 });
         		 
		 
	}
	
	function addSubDrop( dropId, navId ) {
		var drop = document.getElementById(dropId);
		var nav = document.getElementById(navId);
		drop.style.display = "none";
		
		
		addListener(nav,"mouseover", function (e) {
											   
			 //kill last submenu if any
			 if (lastSubDrop != "") {
				document.getElementById(lastSubDrop).style.display = "none";
			 	
			 }
		
			 lastSubDrop = dropId;								   
		     showSubDrop(dropId, navId);
		});
		
		addListener(nav,"mousemove", function (e) {
											   
			 //kill last submenu if any
			 if (lastSubDrop != "") {
				document.getElementById(lastSubDrop).style.display = "none";
			 	
			 }
			 
			 lastSubDrop = dropId;
	         showSubDrop(dropId,navId);
		});
		
		addListener(nav,"mouseout", function (e) {
	         tout = setTimeout("hideSubDrop('" + dropId + "','" + navId + "');",500); 	
		});
		
		
		addListener(drop,"mouseout", function (e) {	
			 if (tout != null)  {
				clearTimeout(tout);
			 }	
			 m_over_sub = false;
	         tout = setTimeout("hideAllDrops('" + lastDropId + "','" + dropId + "');",500);
		});
		
		addListener(drop,"mouseover", function (e) {								
			 if (tout != null)  {
				clearTimeout(tout);
				
			 }	
			 m_over_sub = true;
	         
		});
		
		addListener(drop,"mousemove", function (e) {
	         if (tout != null)  {
				clearTimeout(tout);
			 }	
			 m_over_sub = true;
		});
		
		
		
		
		
	}
	
	
	
	function hideAllDrops(lDrop,lSDrop) {
	    if ((lDrop != "") && (lSDrop != "")) {
		    var drop = document.getElementById(lDrop);
			var subDrop = document.getElementById(lSDrop);
			drop.style.display = "none";
			subDrop.style.display = "none";
			lastSubDrop = "";
			lastDropId = "";
			
			var nav = document.getElementById(lastNavId);
			nav.setAttribute("rel","");
		}
		
	}
	
	function showSubDrop(dropId, navId) {
		
		
		
		var drop = document.getElementById(dropId);
		var nav = document.getElementById(navId);
		
		var coord = findPos(nav);

        lastSubDrop = dropId;
	    if (drop.style.display == "none") {
			drop.style.left = (coord[0]  + getElementWidth(navId)) + "px";
		    drop.style.top = coord[1] + "px";
			drop.style.display = "block";
		}
	}
	
	function hideSubDrop(dropId) {
		if (m_over_sub == false ) {
			var drop = document.getElementById(dropId);
			drop.style.display = "none";
			lastSubDrop = "";
		}
	}

	
	
	
