Prototype.Browser.IE6 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) == 6;
Prototype.Browser.IE7 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) == 7;
Prototype.Browser.IE8 = Prototype.Browser.IE && !Prototype.Browser.IE6 && !Prototype.Browser.IE7;

var HPCommonClass = Class.create({
	menuoutcount: {},
	menuouttimer: false,
	menuopen: false,
	
	initialize: function() {
		if (Prototype.Browser.IE) {
			//This delay fixes IE6 not actually having the dom loaded when dom:loaded is fired...
			window.setTimeout(this.loadMenuBar.bind(this),1000);
			window.setTimeout(this.clickMonitor.bind(this),1000);
		} else {
			this.loadMenuBar();
			this.clickMonitor();
		}
	},
	
	//Generate the menu bar JS engine:
	
	loadMenuBar: function() {
		if (!$('menubar'))
			return;
			
		var observer = this.menuObserver.bind(this);
		var closeobserver = this.closeMenuImmediate.bind(this);
		
		$$('.menubar_container').each(
			function(ele) {
				observer(ele);
			}
		);
		
		
		$$('.menubar_nodropdown').each(
			function(ele) {
				Event.observe(ele,'mouseover',closeobserver);
			}
		);
	},
	
	menuObserver: function(ele) {
		this.initMenu(ele);
		//this.closeMenu(ele);
		
		var hover = this.showMenu.bindAsEventListener(this,ele);
		var hout = this.closeMenu.bindAsEventListener(this,ele);
		
		Event.observe(ele,'mouseover',hover);
		Event.observe(ele,'mouseout',hout);
	},
	
	showMenu: function(e,ele) {
		if (this.menuouttimer) {
			this.menuouttimer.stop();
			this.menuouttimer = false;
		}
		
		if (this.menuopen && this.menuopen.id != ele.id)
			this.hideMenu(false,this.menuopen);
		
		this.menuoutcount[ele.id] = 0;
		
		Element.addClassName(ele,'menubar_active');
		
		var menu = Element.select(ele,'.menubar_dropdown')[0];
		var arrow = Element.select(ele,'.menubar_title img')[0];
		Element.show(menu);
		arrow.src = "/site/menu/arrow_07.gif";
		
		this.menuopen = ele;
	},
	
	closeMenu: function(e,ele) {
		this.menuoutcount[ele.id] = 1;
		this.menuouttimer = new PeriodicalExecuter(this.hideMenu.bindAsEventListener(this,ele),0.5);
	},
	
	closeMenuImmediate: function(e) {
		if (this.menuopen)
			this.hideMenu(false,this.menuopen);
	},
		
	hideMenu: function(e,ele) {
		if (this.menuouttimer) {
			this.menuouttimer.stop();
			this.menuouttimer = false;
		}
		
		if (this.menuoutcount[ele.id] == 0)
			return;
			
		Element.removeClassName(ele,'menubar_active');
		
		var menu = Element.select(ele,'.menubar_dropdown')[0];
		var arrow = Element.select(ele,'.menubar_title img')[0];
		Element.hide(menu);
		arrow.src = "/site/menu/arrow_06.gif";
	},
	
	initMenu: function(ele) {
		
		ele = Element.extend(ele);
		var menu = Element.extend(Element.select(ele,'.menubar_dropdown')[0]);
		
		var offset = ele.positionedOffset();
		
		menu.setStyle({top: (offset[1]+22)+'px', left: (offset[0] - 3) + 'px'});
	},
	
	//Block click events when not wanted on A tags:
	
	clickMonitor: function(e) {
		var es = this.eventStopper.bindAsEventListener(this);
		var seset = $$('.stopevent');
		seset.each(function(ele){ele = Element.extend(ele); ele.observe('click',es);});
	},		

	eventStopper: function(e) {
		Event.extend(e).stop();
	}
});

var HPCommon;

Event.observe(document,"dom:loaded", function(){ HPCommon = new HPCommonClass();});


