
/**
 * Menu open/close
 */
if (typeof(Prototype) == "undefined") 
    throw "LeftMenu requires Prototype";

var LeftMenu = Class.create({
	
	initialize: function(options){
		
		LeMe = this;
		
		this.opt = Object.extend({
			name: 'LeftMenu',
			animate: false,
			debug: false	// set in lib.js
		}, options ||
		{});
		
		var previousContainer;
		
		this.name = this.opt.name;
		this.debug = this.opt.debug;
		
		toggleListItems = this.toggleListItems;    
		toggleButton = this.toggleButton; 
		
		this.log("NEW LeftMenu '" + this.name + "' start " + new Date());
		
		
		$$('li.parent > a').each(function(element){
    
			var li = element.up(0);
			var id;
			
			if(typeof li.id == 'undefined' || li.id == ''){
				id = li.identify();
			//	console.log("id: " + id);
				return false;
			}			
				
			id = li.id;
		
	        if (!li.hasClassName("active")) {
				$$('li#' + id + '.parent ul').invoke("hide");
				$$('li#' + id + '.parent ul li').invoke("removeClassName", "hidden");
				
	        }else{
				$$('li#' + id + '.parent > ul').invoke("addClassName", "open");
				return false;
			}       
	        
	    });		 
	
	},
	
	// uses lib.js "dump" function
	log: function(msg){
		if (typeof this == 'object' && this.debug && typeof dump == 'function' && typeof msg != 'undefined') {
		    if (typeof isIE6 != 'undefined' && isIE6) {
		        // disabled IE6 debug alerts
		        //alert(this.name + " : " + msg);
		    } else {
		        dump(this.name + " : " + msg);
		    }
		}
	},
	
	toggleListItems: function(id){    
        var el = $(id);
	
		LeMe.log("toggleContainer: " + id);
        if (el == null) return false;
		
		LeMe.toggle(el.next('ul'));		
		LeMe.toggleButton(id);
		LeMe.previousContainer = id;
		
    },
	
	close: function(el){
		LeMe.log("Close");
		el.hide();
		Element.removeClassName(el,'open');
		
	},
	
	open: function(el){
		LeMe.log("Open");
		el.show();
		Element.addClassName(el,'open');
		
	},
	
	toggle: function(el){
		
		// do we have the Effect library?
        if (!LeMe.opt.animate || typeof Effect == 'undefined') {
            if(Element.hasClassName(el,'open')){
				LeMe.close(el);
			}else{
				LeMe.open(el);
			}
        }
        else {
            // use Effect
            LeMe.BUDEffect(el);
        }
		
	},
	
	toggleButton: function(id){
        var el = $(id);
        LeMe.log("togglebutton: " + id)
        if(Element.hasClassName(el,"active")){
			LeMe.log("removing active")
			Element.removeClassName(el,'active');
		}else{
			LeMe.log("adding active")
			Element.addClassName(el,'active');
		}
	}, 
	
	BUDEffect: function(element){
		 new Effect.toggle(element, 'Blind', {
	        duration: 0.3
	    });
	}
	
});


Event.observe(document, 'dom:loaded', function(){ 
	var leftmenu = new LeftMenu();
});

