document.observe("dom:loaded", function(){
	objMainNaviObserver.init();
	
	if ($('login_form') !== null) {
		$('show_login').observe('click', function(){
			if($('login_form').visible()){
				$('login_form').fade({duration: 0.4});
			}
			else{
				$('login_form').appear({duration: 0.4});
			}
		});
	}
});

Object.extend(Element.Methods, {
	isChildOf : function(element, parent){
		child = element;
		while(  child.parentNode ){
			if( (child = child.parentNode) == parent ){
				return true;
			}
		}
		return false;
	}	
});
Element.addMethods();

objMainNaviObserver = {
	aeMenuLists:[],
	aeSubMenus:[],
	nContentRightPosition:false,
	init:function(){
		this.nContentRightPosition = $('main_navi').cumulativeOffset().left+990;		
		this.aeMenuLists = $$('#main_navi h1.main_navi_list');
		
		for(var i = 0; i < this.aeMenuLists.length; i++){
			this.aeMenuLists[i].observe('mouseover', objMainNaviObserver.mainNaviListMouseover);
			this.aeMenuLists[i].observe('mouseout', objMainNaviObserver.mainNaviListMouseout);

			this.aeMenuLists[i].number = i;
			this.aeSubMenus[i] = $('sub_navi_list_'+(i+1));
			if( this.aeSubMenus[i] !== null){				
				this.aeSubMenus[i].number = i;
				this.aeSubMenus[i].mouseIsOver = false;
				this.aeSubMenus[i].BlindingDown = false;
				this.aeSubMenus[i].isDown = false;
				this.aeSubMenus[i].BlindingUp = false;
				this.aeSubMenus[i].isUp = true;
				this.aeSubMenus[i].observe('mouseout', objMainNaviObserver.subNaviMouseout);
				this.aeSubMenus[i].observe('mouseover', objMainNaviObserver.subNaviMouseover);
				this.repositionSubMenu(this.aeSubMenus[i]);
			}
		}
	},
	mainNaviListMouseover:function(){

		if ($('login_form') !== null) {
			if($('login_form').visible()){
				$('login_form').fade({duration: 0.4});
			}
		}
		var eSubmenu = objMainNaviObserver.aeSubMenus[this.number];
		if(eSubmenu === null){
			return;
		}
		
		eSubmenu.mouseIsOver = true;
		if( eSubmenu.isUp === true ){
			eSubmenu.BlindingDown = true;
			eSubmenu.isUp = false;

			if ($('sub_navi_list_'+(this.number+1))) {
				Effect.BlindDown( $('sub_navi_list_'+(this.number+1)), {
					afterFinish: function( event ) {
						eSubmenu = event.element;
						eSubmenu.BlindingDown = false;
						eSubmenu.isDown = true;
						eSubmenu.isUp = false;
						
						if(eSubmenu.mouseIsOver === false) {
							objMainNaviObserver.blindUp(eSubmenu);
						}
					},
					duration: 0.4
				});
			}
		}
	},
	mainNaviListMouseout:function(event){
		var eSubmenu = objMainNaviObserver.aeSubMenus[this.number];
		if(eSubmenu === null){
			return;
		}
		var current_mouse_target = null;
		if( event.toElement ){
			current_mouse_target = event.toElement;
		} else if( event.relatedTarget ){
			current_mouse_target = event.relatedTarget;
		}

		if( ! $(current_mouse_target).isChildOf( this) && ! $(current_mouse_target).isChildOf( eSubmenu ) && current_mouse_target.id !== this.id){
			eSubmenu.mouseIsOver = false;
			if(eSubmenu.BlindingDown === false && eSubmenu.BlindingUp === false && eSubmenu.isUp === false){
				objMainNaviObserver.blindUp(eSubmenu);
			}
		}
	},
	subNaviMouseover:function(){
		this.mouseIsOver = true;
	},
	subNaviMouseout:function(event){
		var current_mouse_target = null;
		if( event.toElement ){
			current_mouse_target = event.toElement;
		} else if( event.relatedTarget ){
			current_mouse_target = event.relatedTarget;
		}		
		if( current_mouse_target != null && ! $(current_mouse_target).isChildOf( this ) && ! $(current_mouse_target).isChildOf( objMainNaviObserver.aeMenuLists[this.number] ) ){
			this.mouseIsOver = false;
			var nSubnaviId = this.id.split('_')[3];
			var nMainnaviId = current_mouse_target.id.split('_')[3];
			if(this.BlindingDown === false && this.BlindingUp === false && this.isUp === false && nSubnaviId !== nMainnaviId ){
				objMainNaviObserver.blindUp(this);
			}
		}
	},
	blindUp:function(element){
		element.BlindingUp = true;
		Effect.BlindUp( element, {
			afterFinish: function(event){
				eSubmenu = event.element;
				eSubmenu.isUp = true;
				eSubmenu.isDown = false;
				eSubmenu.BlindingUp = false;
				eSubmenu.BlindingDown = false;
			},
			duration: 0.4
		});
	},
	repositionSubMenu: function(eElement){		
		eElement.setStyle({
			display:'block'
			
		});		
		var nBackgroundPositionLeft = ( eElement.cumulativeOffset().left + eElement.getWidth() - this.nContentRightPosition ) + 21;
		eElement.setStyle({
			display:'none'
		});		

		if( nBackgroundPositionLeft > 0){

			eElement.childElements()[0].setStyle({
				backgroundPosition: nBackgroundPositionLeft+'px -1px'
			});
			eElement.setStyle({
				marginLeft: '-'+(nBackgroundPositionLeft-10)+'px'
			});
		}
	}
};
