var TridentFix = new Class({
	tridentFix: function(item){
		item.addEvents({
			'mouseover':function(){
				this.addClass('iehover');
			},
			'mouseout':function(){
				this.removeClass('iehover');
			}
		});
	}
});


var DropMenu = new Class({
	Implements: [Options,TridentFix],
	options: {
		mode: 'horizontal'
	},
	menu: null,
	initialize: function(menu,options){
		if(options) this.setOptions(options);
	
		this.menu = $(menu);
		var children = this.menu.getChildren();
		children.each(function(item,index){
			var fChild, list;
			fChild = item.getFirst();
			list = fChild.getNext('ul');
			//if(Browser.Engine.trident) this.tridentFix(item);
			if(list){
				item.mel = list;
				list.pel = item;
				new SubMenu(list);
			}
		},this);

	}	
});

var timeOutFunction = function() {$('subNav').style.display = 'block';}
var timeOut         = false;

var SubMenu = new Class({
	Implements: [Options,TridentFix],
	options: {
		mode: 'horisontal'
	},
	menu: null,
	depth: 0,
	initialize: function(el,depth,options){
		if(options) this.setOptions(options);
		if(depth) this.depth = depth;		
		this.menu = el;		
		if(this.depth == 0)	this.menu.addClass('submenu');
		if(this.depth >= 1)	this.menu.addClass('sub_submenu');		
		this.menu.fade('hide');
		this.menu.pel.addEvents(this.parentEvents); 
		var children = this.menu.getChildren();
		children.each(function(item,index){
			var fChild, list;
			fChild = item.getFirst();
			list = fChild.getNext('ul');
			if(Browser.Engine.trident) this.tridentFix(item);
			if(list){
				var count = new Element('span').set('html','\&raquo;').addClass('counter');				
				item.adopt(count);
				count.fade('hide');
				item.mel = list;
				item.count = count;
				list.pel = item;
				new SubMenu(list,this.depth+1);
			}
		},this);
	},
	parentEvents: {
		'mouseover': function(){
            $('subNav').style.display = 'none';
            if(timeOut != false) {clearTimeout(timeOut);}
            if(Browser.Engine.trident) { if(this.count) this.count.style.display = 'block'; this.mel.style.display = 'block'; }
			if(this.count) this.count.fade('in');
			this.mel.fade('in');
		},
		'mouseout': function(){
			if(this.count) this.count.fade('out');
			this.mel.fade('out');
            if(Browser.Engine.trident) {
                timeOut         = setTimeout("timeOutFunction", 300);
            } else {
                $('subNav').style.display = 'block';
            }
		}
	}
});
