/**
 * @author jfdesgagne
 */
var SubMenu = new Class({
	selectedItem:null,
	selectedButton:null,

    initialize: function(options){
    	this.initInteractivity();		
    },
	
	initInteractivity: function() {
		$$('#mainMenu li a').each(function(el){
			el.addEvent('mouseenter', this.subMenuBtnMouseEnterHandler);
			el.addEvent('mouseleave', this.subMenuBtnMouseLeaveHandler);
			el.refClass = this;
			el.getElement('img').set('tween', {duration:200});
			//el.getElement('img').setStyle('top', el.getElements('img')[1].getCoordinates().top - $('mainMenu').getCoordinates().top)
		}.bind(this));
		
		this.initMenu('subMenu_products');
		this.initMenu('subMenu_services');
		
		$('tooltip').set('tween', {'duration': '200'});	
		$('tooltip').addEvent('mouseenter', this.tooltipMouseEnterHandler.bind(this));
		$('tooltip').addEvent('mouseleave', this.tooltipMouseLeaveHandler.bind(this));
	},	
	
	initMenu: function(name) {
		if($(name)) {
			$(name).set('tween', {'duration': '300', 'transition':Fx.Transitions.Expo.easeOut});
			$(name).initHeight = $(name).getCoordinates().height + 40;
			$(name).setStyles({
				'height': 0,
				'display': 'block',
				'visibility': 'visible'
			})
			$(name).refClass = this;
			$(name).addEvent('mouseenter', this.menuMouseEnterHandler);
			$(name).addEvent('mouseleave', this.menuMouseLeaveHandler);
			$(name).getElements('.items li a').each(function(a) {
				a.addEvent('mouseenter', this.subMenuItemMouseEnterHandler.bind(this));
				a.addEvent('mouseleave', this.subMenuItemMouseLeaveHandler.bind(this));
				a.el = $(name);
				a.refClass = $(name).refClass;
			}.bind(this));			
			if ($(name).getElement('div')) {
				$(name).getElement('div').initWidth = $(name).getElement('div').getCoordinates().width;
				$(name).getElement('div').initHeight = $(name).getElement('div').getCoordinates().height;
			}
			if(Browser.Engine.gecko) if(name=="subMenu_products") $(name).getElement('div').initHeight += 30;
		
		}
		
		
	},
	
	menuMouseEnterHandler: function(event) {
		this.refClass.clearTimer(this);
		if(this.refClass.selectedButton) if(this.refClass.selectedButton.className!="selected") this.refClass.selectedButton.getElement('img').fade('in');
	},
	
	menuMouseLeaveHandler: function(event) {
		this.refClass.initTimer(this);
		if(this.refClass.selectedButton) if(this.refClass.selectedButton.className!="selected") this.refClass.selectedButton.getElement('img').fade('out');
	},
		
	
	initTimer:function(el) {
		if (el) {
			this.clearTimer(el);
			el.timer = this.close.delay(500, this, el);
		}
	},
	
	clearTimer:function(el) {
		if (el) {		
			$clear(el.timer);
			el.timer = null;
		}
	},	
	
	subMenuBtnMouseEnterHandler: function(event) {
		if(this.refClass.selectedButton) if(this.refClass.selectedButton.className!="selected") this.refClass.selectedButton.getElement('img').fade('out');
		if(this.refClass.selectedItem) this.refClass.selectedItem.tween('height', '0');
		if(this.className!="selected") this.getElement('img').fade('in');
		this.refClass.open(this, $('subMenu_' + this.id));
		this.refClass.clearTimer($('subMenu_'+this.id));
		this.refClass.selectedButton = this;
	},
	
	subMenuBtnMouseLeaveHandler: function(event) {
		this.refClass.initTimer($('subMenu_'+this.id));
		if(this.refClass.selectedButton) if(this.refClass.selectedButton.className!="selected") this.refClass.selectedButton.getElement('img').fade('out');
	},
	
	close:function(el) {
		if (el) el.tween('height', '0');
	},
	
	open:function(itemMenu, el) {
		if (el) {
			var coord = itemMenu.getCoordinates();
			
			if (Browser.Engine.trident4 || Browser.Engine.trident5) {
				el.setStyles({
					'left': coord.left - 9,
					'top': coord.top + coord.height
				});
			} else {
				el.setStyles({
					'left': coord.left - 9,
					'top': coord.top + coord.height - 3
				});
			}
		
			el.tween('height', el.getElement('div').initHeight+60);
		
			el.getElement('div').setStyles({
				'width':el.getElement('div').initWidth,
				'height':el.getElement('div').initHeight
			});
		}
		this.selectedItem = el;
		
		
		
	},
	

	
	subMenuItemMouseEnterHandler:function(event) {
		if (event.target.rel) {
			var coord = event.target.getParent().getCoordinates();
			//$('tooltip').fade('in');
			$('tooltip').setStyle('display', 'block');
			$('tooltip').setStyles({
				'left': coord.left + coord.width - 110,
				'top': coord.top - 33
			});
			$('tooltip').getElement('img').src = root + "assets/file_library/subMenu/" + event.target.rel;
			$('tooltip').el = event.target.el;
		}
	},
	
	subMenuItemMouseLeaveHandler:function(event) {
		if (event.target.rel) {
			$('tooltip').setStyle('display', 'none')
			//$('tooltip').fade('out');
		}
	},
	
	
	tooltipMouseLeaveHandler:function(event) {
		//$('tooltip').fade('out');	
		$('tooltip').setStyle('display', 'none')	
		this.initTimer($('tooltip').el);
	},
	
	tooltipMouseEnterHandler:function(event) {
		this.clearTimer($('tooltip').el);
		//$('tooltip').fade('in');
		$('tooltip').setStyle('display', 'block')
	}
	
});

SubMenu.implement(new Options, new Events);


