DropDownMenu = Class.create();
DropDownMenu.instances = [];
DropDownMenu.prototype = {
	params: {icons:true,hideselects:false},
	iconFolder: '/base2/global/images/icons/',
	init: function(elem,params){
		DropDownMenu.instances.push(this);
		
		this.current = [];
		if(params){
			for(i in params){
				this.params[i] = params[i];
			}
		}
		
		elem = $(elem);
		if(this.params.hideselects && document.getElementById && document.all){
			elem.onmouseover = Form.hideSelects;
			elem.onmouseout = Form.showSelects;
		}
		var lis = $G('li',elem);
		for(var i=0; i<lis.length; i++){
			var li = lis[i];
			var level = 0;
			while(li.parentNode.nodeName.toLowerCase() == 'li' || li.parentNode.nodeName.toLowerCase() == 'ul'){
				level++;
				li = li.parentNode.parentNode;
			}
			this.addChild(lis[i],level);
		}
	},
	addChild: function(elem,level){
		new DropDownMenu.Child(this,elem,level);
	},
	setCurrentPage: function(li_id){
		var menu = $(li_id);
		while(menu.parentNode.nodeName.toLowerCase() == 'li' || menu.parentNode.nodeName.toLowerCase() == 'ul') {
			Elem.addClassName(menu,'on');
			Elem.addClassName(menu.firstChild,'on');
			menu = menu.parentNode.parentNode;
		}
	}
}
DropDownMenu.Child = Class.create();
DropDownMenu.Child.prototype = {
	init: function(parent,elem,level){
		var me = this;
		this.parent = parent;
		this.level = level;
		this.timeout = null;
		this.container = elem;
		this.a = $G('a',elem)[0];
		this.ul = $G('ul',elem);
		this.ul.length ? this.ul = this.ul[0] : this.ul = {};
		this.a.onmouseover = function(){me.show()};
		this.ul.onmouseover = function(){me.reset()};
		this.a.onmouseout = this.ul.onmouseout = function(){me.hide()};
		this.icon = this.container.getAttribute('icon');
		if(this.parent.params.icons){
			if(this.icon){
				var span = Elem.create('span');
				span.className = 'navicon';
				span.style.backgroundImage = 'url("/base2/global/images/icons/'+this.icon+'")';
				Elem.prepend(this.a,span);
				this.a.style.textIndent = '0px';
			}
		}
		if(this.ul.style){
			Elem.addClassName(this.a,'expandable');
		}
	},
	show: function(e){
		try {
			this.reset();
			var parent = this.parent;
			var lvl = this.level;
			if(parent.current[lvl]) parent.current[lvl].kill();
			parent.current[lvl] = this;
			Elem.addClassName(this.container,'over');
			Elem.addClassName(this.a,'over');
			if(this.ul.style) Elem.addClassName(this.ul,'over');
		}catch(e){}
	},
	hide: function(e){
		try {
			var me = this;
			if(this.ul.style){
				this.timeout = setTimeout(function(){me.kill()},700);
			} else {
				this.kill();
			}
		}catch(e){}
	},
	kill: function(e){
		Elem.removeClassName(this.container,'over');
		Elem.removeClassName(this.a,'over');
		if(this.ul.style) Elem.removeClassName(this.ul,'over');
	},
	reset: function(e){
		if(this.timeout) clearTimeout(this.timeout);
	}
}
