var Main = {
	init: function() {
		Main.initSearch();
		Main.initMainMenu();
	},
	start: function() {
		new SmoothScroll();
	},
	initMainMenu: function() {
		var metaNav = $('meta_nav');
		var mainMenuItems = $$('ul#main_nav li.level0');
		var subMenus = $$('ul#main_nav li.level0 ul.level1');
		var subMenuItems = $$('ul#main_nav li.level0 ul.level1 li.level1');
		var subSubMenus = $$('ul#main_nav li.level0 ul.level1 li.level1 ul.level2');
		var subSubMenuItems = $$('ul#main_nav li.level0 ul.level1 li.level1 ul.level2 li.level2');
		var isSubActive = false;
		subMenus.each(function(subMenu, i) {
			subMenu.setStyles({
				'width': 'auto',
				'text-align': 'left'
			});
			var parent = subMenu.getParent();			
			if (parent.hasClass('active')) {
				isSubActive = true;
			} else {
				subMenu.setStyle('opacity', 0);
			}
			var offsetX = Math.max(0, (subMenu.getParent().getPosition(metaNav).x+subMenu.getParent().getSize().x/2)-subMenu.getSize().x/2);
			if (offsetX + subMenu.getSize().x > 977) {
				offsetX = 977-subMenu.getSize().x;
			}
			if(offsetX > 0) {
  			subMenu.setStyles({
  				'padding-left': offsetX,
  				'width': 977-offsetX
  			});
			}
			
		});
		subSubMenus.each(function(subSubMenu, i) {
			subSubMenu.setStyles({
				'width': 'auto',
				'text-align': 'left'
			});	
			var parent = subSubMenu.getParent();			
			if (parent.hasClass('active')) {
				isSubActive = true;
			} else {
				subSubMenu.setStyle('opacity', 0);
			}		
			var offsetX = Math.max(0, (subSubMenu.getParent().getPosition(metaNav).x+subSubMenu.getParent().getSize().x/2)-subSubMenu.getSize().x/2);
			if (offsetX + subSubMenu.getSize().x > 977) {
				offsetX = 977-subSubMenu.getSize().x;
			}
			subSubMenu.setStyles({
				'padding-left': offsetX,
				'width': 977-offsetX
			});
		});
		
		if (isSubActive) {
			metaNav.setStyle('margin-bottom', 120);			
		} else {
			metaNav.setStyle('margin-bottom', 50);			
		}
		var subMenuFx = new Fx.Elements(subMenus, {
			duration: 'normal', 
			link: 'cancel', 
			transition: Fx.Transitions.Quad.easeInOut
		});
		var subSubMenuFx = new Fx.Elements(subSubMenus, {
			duration: 'normal', 
			link: 'cancel', 
			transition: Fx.Transitions.Quad.easeInOut
		});
		mainMenuItems.each(function(mainMenuItem, i) {
			mainMenuItem.addEvent('mouseenter', function(e) {
				mainMenuItem.addClass('level0_current');
				mainMenuItems.each(function(otherMainMenuItem, j) {
					if (i!=j) {
						otherMainMenuItem.removeClass('level0_current');
					}
				});
				metaNav.tween('margin-bottom', 120);
				var obj = {};
				subMenus.each(function(subMenu, j) {
					subMenu.getChildren('li.level1').each(function(subMenuItem, k) {
						//subMenuItem.removeClass('level1_current');
					});
					obj[j] = {
						'opacity': (subMenu.getParent() == mainMenuItem) ? 1 : 0
					};
				});
				subMenuFx.start(obj);
			});
			var obj = {};
			subMenus.each(function(subMenu, j) {
				obj[j] = {
					'opacity': (subMenu.getParent().hasClass('active')) ? 1 : 0
				};
			});
			subMenuFx.start(obj);			
		});
		subMenuItems.each(function(subMenuItem, i) {
			subMenuItem.addEvent('mouseenter', function(e) {
				subMenuItem.addClass('level1_current');
				subMenuItems.each(function(otherSubMenuItem, j) {
					if (i!=j) {
						otherSubMenuItem.removeClass('level1_current');
					}
				});
				var obj = {};
				subSubMenus.each(function(subSubMenu, j) {
					obj[j] = {
						'opacity': (subSubMenu.getParent() == subMenuItem) ? 1 : 0
					};
					subSubMenuItems.each(function(subSubMenuItem, j) {
						subSubMenuItem.removeClass('level2_current');
					});					
				});
				subSubMenuFx.start(obj);
			});
			var obj = {};
			subSubMenus.each(function(subSubMenu, j) {
				obj[j] = {
					'opacity': (subSubMenu.getParent().hasClass('active')) ? 1 : 0
				};
			});
			subSubMenuFx.start(obj);			
		});
		subSubMenuItems.each(function(subSubMenuItem, i) {
			subSubMenuItem.addEvent('mouseenter', function(e) {
				subSubMenuItems.each(function(otherSubSubMenuItem, j) {
					otherSubSubMenuItem.removeClass('level2_current');
				});			
				subSubMenuItem.addClass('level2_current');
			});
		});
		$('main_nav').addEvent('mouseleave', function(e) {
			var bShowSubMenu = false;
			var bShowSubSubMenu = false;
			var submenuobj = {};
			subMenus.each(function(subMenu, j) {
				submenuobj[j] = { 'opacity': 0 };
				if (subMenu.getParent().hasClass('active')) {
					submenuobj[j] = { 'opacity': 1 };
					bShowSubMenu = true;
				}
			});
			var subsubmenuobj = {};
			subSubMenus.each(function(subSubMenu, j) {
				subsubmenuobj[j] = { 'opacity': 0 };
				if (subSubMenu.getParent().hasClass('active')) {
					subsubmenuobj[j] = { 'opacity': 1 };
					bShowSubSubMenu = true;
				}
			});
			mainMenuItems.each(function(mainMenuItem, j) {
				mainMenuItem.removeClass('level0_current');
				if (mainMenuItem.hasClass('active')) {
					mainMenuItem.addClass('level0_current');
				}
			});
			subMenuItems.each(function(subMenuItem, j) {
				subMenuItem.removeClass('level1_current');
				if (subMenuItem.hasClass('active')) {
					subMenuItem.addClass('level1_current');
				}				
			});
			subSubMenuItems.each(function(subSubMenuItem, j) {
				subSubMenuItem.removeClass('level2_current');
				if (subSubMenuItem.hasClass('active')) {
					subSubMenuItem.addClass('level2_current');
				}				
			});		
			
			if (!(bShowSubMenu || bShowSubSubMenu)) {
				metaNav.tween('margin-bottom', 50);			
			}
			subSubMenuFx.start(subsubmenuobj);
			subMenuFx.start(submenuobj);
		});
	},
	initSearch: function() {
		var searchToggle = $('search');
		searchToggle.getChildren('a').setProperty('href', 'javascript:$("searchinput").focus();');
		var searchInput = $('searchinput');
		searchInput.setStyles({
			'position': 'absolute',
			'top': 64
		});
		var searchInputWidth = searchInput.getScrollSize().x;
		searchInput.fade('hide');
		searchToggle.setStyles({
			'overflow': 'hidden'
		});
		var searchToggleWidth = searchToggle.getScrollSize().x;
		var searchLayerFx = new Fx.Tween(searchToggle, { 
			link: 'cancel',
			duration: 'long'
		});
		searchToggle.addEvent('mouseenter', function(e) {
			searchLayerFx.start('width', searchToggleWidth+searchInputWidth).chain(function() {
				searchInput.fade('in');
			});
		});
		searchToggle.addEvent('mouseleave', function(e) {
			searchInput.blur();
			searchInput.fade('out');
			searchLayerFx.start('width', searchToggleWidth-36);
		});
	}

};
window.addEvent('domready', Main.init);
window.addEvent('load', Main.start);

