﻿var YUD = YAHOO.util.Dom;
var YUE = YAHOO.util.Event;

function initDropdowns(){
	var dd1 = new DropDown();
	dd1.init('ddProducts');
	
	var dd2 = new DropDown();
	dd2.init('ddResources');
	
	var dd3 = new DropDown();
	dd3.init('ddIndustries');
}

function DropDown(){
    var element;
    var container;
	var self = this;
	var height;

    this.init = function(dropdownId){
        element = YUD.get(dropdownId);
		
        var buttonEl = YUD.getElementsByClassName("nav-main-link", "a", element)[0];
        button = new Button(buttonEl);
        
        var containerEl = YUD.getElementsByClassName("submenu", "DIV", element)[0];
        container = new Container(containerEl);
    }
    
    function Button(buttonEl){
        var self = this,
            element = buttonEl;
                
		YUE.addListener(element, "mouseover", function(){
			container.open();
        });
		
		YUE.addListener(element, "mouseout", function(event){
			if (!YUD.isAncestor(this.parentNode, YUE.getRelatedTarget(event))) {
                container.close();
            }
        });
    }
    
    function Container(containerEl){
        var self = this,
            element = containerEl,
            itemArr = [],
		    dropdown_list = YUD.getElementsByClassName("submenu-list", "UL", element)[0],
		    isOpen = false;

		YUE.addListener(element, "mouseout", function(event){
			if (!YUD.isAncestor(this.parentNode, YUE.getRelatedTarget(event))) {
                self.close();
            }
		});
		
		YUE.addListener(element, "mouseover", function(event){
			if (!YUD.isAncestor(this.parentNode, YUE.getRelatedTarget(event))) {
                self.open();
            }
		});

	    this.height = containerEl.getElementsByTagName("ul")[0].offsetHeight;

	    var openAnimAttributes = {height: {to: this.height}} 
            
        var closeAnimAttributes = {height: {to: 0}}
                    
        var openAnim = new YAHOO.util.Anim(element, openAnimAttributes, 0.25, YAHOO.util.Easing.easeOut);

		openAnim.onComplete.subscribe(function(){
			isOpen = true;
		}); 
		
		var closeAnim = new YAHOO.util.Anim(element, closeAnimAttributes, 0.25, YAHOO.util.Easing.easeIn);
		
		closeAnim.onComplete.subscribe(function(){
			isOpen = false;
		}); 
        
        this.open = function(event){
            if(!isOpen){
				openAnim.animate();
            }
            else{
				closeAnim.stop();
				openAnim.animate();                
            }
        }
        
        this.close = function(event){
			if (isOpen){
				closeAnim.animate();
			}
			else if (openAnim.isAnimated()) {
				openAnim.stop();
				closeAnim.animate();			
			}			
        }
    }
}
