/*
	JavaScript Document
	Author: Alex Platt
	Create dropdown menus
	Use:
	   addDropToElement("dropDivId","navbarLinkId", 0); //instant
	   addDropToElement("dropDivId","navbarLinkId", dropdownHeight ); //instant rollout effect
*/


    rollingX = 0;
	var lastDropId = "";
	var rollingIntr;
	function roll( dropId, dropHeight ) {
	        var drop = document.getElementById(dropId);
			drop.style.height = rollingX + "px"
			rollingX += 5;
			if ((rollingX >= dropHeight) || (drop.style.display == "none")) {
			   clearInterval(rollingIntr); 
			   rollingX = 0;
			}
			 
			
	}

    function showDrop( dropId, anchorId, dropHeight ) {
		 if (dropId != lastDropId) {
			 if (lastDropId != "")  hideDrop(lastDropId); 
			 lastDropId = dropId;	 
		 }
		
	     var coord = findPos(document.getElementById(anchorId));
		 var drop = document.getElementById(dropId);
		 drop.style.left = coord[0] + "px";
		 drop.style.top = (coord[1] + getElementHeight(anchorId)) + "px";
		 if (drop.style.display == "none") {
		    drop.style.display = "inline";
			if (dropHeight != 0) {
 			    rollingIntr = setInterval("roll('" + dropId + "'," + dropHeight + ");",10);			
			}
			
		 }
	}
	
	var modrop = Array();
	
	function hideDrop( dropId ) {
		 if (modrop[dropId] == false) {
	     	var drop = document.getElementById(dropId);
		 	drop.style.display = "none";
		 }
	}
	
	
	function addDropToElement( dropId, anchorId , dropHeight) {
	     var drop = document.getElementById(dropId);
		 var tout = null;
		 var m_on_drop = false;
		 modrop[dropId] = false;
		 var origHeight = dropHeight;
	 
	     addListener(document.getElementById(anchorId),"mouseover", function (e) {
		       showDrop(dropId, anchorId, origHeight);
		 });
		 
		 addListener(document.getElementById(anchorId),"mousemove", function (e) {
		      if (drop.style.display == "none") {
		         showDrop(dropId, anchorId, origHeight);
			  }
		 });
		 
		 addListener(document.getElementById(anchorId),"mouseout", function (e) {
			  tout = setTimeout("hideDrop('" + dropId + "');",2000); 	 
		 });
		
		 
		 
		 addListener(drop,"mouseout", function (e) {
		     if (m_on_drop == true) {
			     m_on_drop = false;
				 modrop[dropId] = false;
				 tout = setTimeout("hideDrop('" + dropId + "');",2000); 	 
			 }
		 });
		 
		 addListener(drop,"mousemove", function (e) {
		     
		     if ( (tout != null) || (m_on_drop == false) ) {
				clearTimeout(tout);
			 }
			 m_on_drop = true;
			 modrop[dropId] = true;
			 showDrop(dropId, anchorId, origHeight);
			 
		 });
         		 
		 
	}
	

    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 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);
	  }
	}
	
