function CDCMenu() {
	
	/**
	 * initialize menu
	 *
	 * @author	Alfred Dagenais <adagenais@orangetango.com>
	 */
	this.initialize = function() {
		
		// Assign controller to a global variable
		window.eval('CDCMenuController = this;');
		
	};
	
	/**
	 * Find object Position
	 *
	 * @author	Alfred Dagenais <adagenais@orangetango.com>
	 */
	this.findPosition = function(obj) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			do {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			} while (obj = obj.offsetParent);
		}
		return [curleft,curtop];
	};

	/**
	 * load menu
	 *
	 * @author	Alfred Dagenais <adagenais@orangetango.com>
	 */
	this.load = function() {
		if(document.getElementById("navMenu")){
			
			//Init Var for Navigator
			var agt = navigator.userAgent.toLowerCase();
			var is_ie = (agt.indexOf("msie")!= -1 && document.all && agt.indexOf("opera") == -1);
			var is_ie5 = is_ie && (agt.indexOf("msie 5") != -1);
			var is_ie6 = is_ie && (agt.indexOf("msie 6") != -1);
			var is_ie7 = is_ie && (agt.indexOf("msie 7") != -1);
			var is_safari = (agt.indexOf("safari") != -1);
			
			if(is_ie){
				document.getElementById("container").onmouseover=function() {
					CDCMenuController.unload();
				};
			}
			
			var sWrapper = document.getElementById("sub-wrapper"); // Container
			var cWidth = (is_ie) ? sWrapper.offsetWidth : sWrapper.clientWidth;// Width of Container
			var cPosition = CDCMenuController.findPosition(sWrapper);
			var cX = cPosition[0];
			var cX2 = cPosition[0] + cWidth;
			
			var sfEls = document.getElementById("navMenu").getElementsByTagName("LI");
			for (var i=0; i<sfEls.length; i++) {
				sfEls[i].onmouseover=function() {
					if(is_ie){
						CDCMenuController.unload();
					}
					this.overload = false;
					this.className+=" sfhover";
					var elsMenu = this.getElementsByTagName("LI");
					if(elsMenu.length > 0){
						for (var i=0; i<1; i++) {//Select one element to check if over the sWrapper
							var el = elsMenu[i];
							var elWidth = (is_ie) ? el.offsetWidth : el.clientWidth;
							var elPosition = CDCMenuController.findPosition(el);
							var elX = elPosition[0];
							var elX2 = elPosition[0] + elWidth;
							if(elX2 > cX2){
								this.className+=" elMenu-overload";
								this.overload = true;
							}
						}
					}
				}
				sfEls[i].onmouseout=function() {
					//Remove all class name
					this.className=this.className.replace(new RegExp("sfhover\\b"), "");
					if(this.overload){
						this.className=this.className.replace(new RegExp("elMenu-overload\\b"), "");
					}
					//alert('sd');
				}
			}
			
		}
	};
	
	/**
	 * unload menu
	 *
	 * @author	Alfred Dagenais <adagenais@orangetango.com>
	 */
	this.unload = function(){
		var sfEls = document.getElementById("navMenu").getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].className=sfEls[i].className.replace(new RegExp("sfhover\\b"), "");
		}
	}
	
}
var Menu = new CDCMenu();
Menu.initialize();

if(window.addEventListener){
	window.addEventListener('load',Menu.load,false);
	window.addEventListener('resize',Menu.load,false);
}else if(window.attachEvent){
	window.attachEvent('onload',Menu.load);
	window.attachEvent('onresize',Menu.load);
}
