
//var aMainMenuButtonWidth = new Array();
var oMoveSunAnimation; 								//YUI animation object for sun
var iCurrentSubMenu; 									//Id of the submenu, which is hovered by mouse
var iActivePageMenuItem; 							//Menu-Id of the active page
var aSubMenuAnimations = new Array(); //Array of YUI animation objects for the submenus to come in
var aMainMenuRegions = new Array();		//Array of YUI Region objects of the main menu items
var bStopMenu = false;								//Is set on click on an menuitem to avoid further animations

var oHoverRegion;											//YUI Region object of the Region where the menu stays interactive

var oCheckMouseInterval;							//Intervalobject that is called every 100 ms to check the position of the mouse

function loadMenuAnimations(){
	window.onresize = onWindowResize;  
	oHoverRegion= YAHOO.util.Dom.getRegion(document.getElementById('header_menu_main'));
	oHoverRegion.bottom += 60;
 
 
	var oMMMainDiv =	document.getElementById('header_menu_main');
	
	// init the sun animation
	oMoveSunAnimation = new YAHOO.util.Anim(
		"header_menu_sun", 
		{
			marginLeft: {from:0, to:0}
		}, 
		0.5
	);
		

	
	loadMainMenuArray();
	
	// get the submenudivs at the bottom of the menu
	var oSubMenuOuterDiv = document.getElementById('header_menu_sub_outerdiv');
	var oSubMenuItemRegion;
	
	aElements = getDirectChildsByTagName('div', oSubMenuOuterDiv);
	for(var i = 0; i < aElements.length; i++){
		oSubMenuItemRegion = YAHOO.util.Dom.getRegion(aElements[i]);
		
		aElements[i].style.marginTop = 170-(oSubMenuItemRegion.bottom-oSubMenuItemRegion.top)+"px";
		
		aSubMenuAnimations[i] = new YAHOO.util.Anim(
															aElements[i], 
															{}, 
															0.5
														);
	}
	oCheckMouseInterval = window.setInterval('checkMouseInMenu()', 50);

	oResizeInterval = window.setInterval('onWindowResize()', 777);

	var oSun = document.getElementById('header_menu_sun');
	
	iActivePageMenuItem = getActiveMenu();
	
	oSun.style.marginLeft = getXPositionForSun(iActivePageMenuItem) + "px";
	oSun.style.display = 'block';
	
	if(document.all){
		document.getElementById('menu_main_sun_image').width = document.getElementById('menu_main_sun_image').width;
		document.getElementById('menu_main_sun_image').height = document.getElementById('menu_main_sun_image').height;
		document.getElementById('menu_main_sun_image').style.behavior = "url(/totoya/cache/core/clib/lib/iepngfix/iepngfix.htc)";
	}
				
	
}

function loadMainMenuArray(){
	var oMMMainDiv =	document.getElementById('header_menu_main');
	aMainMenuRegions = new Array();
	// add main menu items to the main menu array
	if(oMMMainDiv.hasChildNodes()){
		var aElements = oMMMainDiv.getElementsByTagName('div');
		for(var i = 0; i < aElements.length; i++){
			aMainMenuRegions[aMainMenuRegions.length] = YAHOO.util.Dom.getRegion(aElements[i]);
		}
	}
}

var iLastOver = new Date().getTime();// Timestamp of the last time the mouse hovered over the menu
function checkMouseInMenu(){

	if(bStopMenu){
		return;
	}
	
	var oCurrentPoint = new YAHOO.util.Point(iMouseXPosition, iMouseYPosition);

	if(oHoverRegion.contains(oCurrentPoint)){
		iLastOver = Date.parse(new Date());
		
		if(iCurrentSubMenu > 0 && aMainMenuRegions[iCurrentSubMenu].contains(oCurrentPoint)){
			return;
		}
		
		for(var i = 0; i < aMainMenuRegions.length; i++){
			if(aMainMenuRegions[i] && typeof aMainMenuRegions[i].contains == "function") {
				if(aMainMenuRegions[i].contains(oCurrentPoint)){
					activateMenu(i)
					activateSubMenu(i);
					break;
				}
			}
		}
		
	}else{
		if((Date.parse(new Date())-iLastOver) > 1000){
			activateMenu(iActivePageMenuItem);
			activateSubMenu(-1);
		}
	}
	
}

function activateButton(e){
	var oTargetDiv;
	
	// ie needs special treatment... again...
	if(e.toElement){
		if(e.toElement.parentNode.tagName == "DIV"){
			oTargetDiv = e.toElement.parentNode;
		}else{
			oTargetDiv = e.toElement.parentNode.parentNode;
		}
	}else{
		oTargetDiv = e.currentTarget;
	}
	
	var aElements = document.getElementById('header_menu_main').getElementsByTagName('div');
	for(var i = 0; i < aElements.length; i++){
		if(aElements[i] == oTargetDiv){
			activateMenu(i);
			activateSubMenu(i);
			break;
		}
	}
}

function getXPositionForSun(iNumber){
	var oMainMenuOuterDiv = document.getElementById('header_menu_main');
	var iXPosition; 
	
	var oEventTarget = oMainMenuOuterDiv.getElementsByTagName('div')[iNumber];
	
	var oElementRegion = YAHOO.util.Dom.getRegion(oEventTarget);
	
	if(oElementRegion.right > oElementRegion.left){
		iXPosition = Math.round(((oElementRegion.right - oElementRegion.left) / 2) + oElementRegion.left) - oHoverRegion.left;
	}
	return iXPosition - 19;
}

function activateMenu(iNumber){
	var oMainMenuOuterDiv = document.getElementById('header_menu_main');
	var oEventTarget = oMainMenuOuterDiv.getElementsByTagName('div')[iNumber];
	var iXPosition;
	
	
		
	iXPosition = getXPositionForSun(iNumber);
	
	sSunLeft = document.getElementById('header_menu_sun').style.marginLeft;
	iSunLeft = parseInt(sSunLeft.substr(0,sSunLeft.length-2));
	
	if(iXPosition <= iSunLeft+1 && iXPosition >= iSunLeft-1){
		return;
	}
	
	var oMenuElements = oMainMenuOuterDiv.getElementsByTagName('div');
	var sFirstImageDisplay = "";
	var sSecondImageDisplay = "";
	for(var i = 0; i < oMenuElements.length; i++){
		if(oMenuElements[i] == oEventTarget){
			sFirstImageDisplay = "none";
			sSecondImageDisplay = "block";
		}else{
			sFirstImageDisplay = "block";
			sSecondImageDisplay = "none";
		}
		if(oMenuElements[i].getElementsByTagName('img').length == 2){
		
				if(document.all){
					for(var j = 0; j < aIEImageFixImages.length; j++){
						if(aIEImageFixImages[j] == oMenuElements[i].getElementsByTagName('img')[0]){
							fixImageForIE(j);
						}
						if(aIEImageFixImages[j] == oMenuElements[i].getElementsByTagName('img')[1]){
							fixImageForIE(j);
						}
						
					}
				}
				
				oMenuElements[i].getElementsByTagName('img')[0].style.display = sFirstImageDisplay;
				oMenuElements[i].getElementsByTagName('img')[1].style.display = sSecondImageDisplay;
		}
	}
	
	
	
	
	oMoveSunAnimation.stop();
	oMoveSunAnimation.attributes.marginLeft = {to: (iXPosition)};
	oMoveSunAnimation.animate();
}

function getActiveMenu(){
	var oMMMainDiv =	document.getElementById('header_menu_main');
	var oMMMainDivs = oMMMainDiv.getElementsByTagName('div');
	for(var i = 0; i < oMMMainDivs.length; i++){
		if(oMMMainDivs[i].getElementsByTagName('a').length > 0){
			if(oMMMainDivs[i].getElementsByTagName('a')[0].getElementsByTagName('img')[1].style.display == 'block'){
				return i;
			}
		}
		if(oMMMainDivs[i].getElementsByTagName('img')[1].style.display == 'block'){
			return i;
		}
	}
	return 0;
}


function activateSubMenu(iSubMenuNumber){
	var oSubMenuOuterDiv = document.getElementById('header_menu_sub_outerdiv');
	var oSubMenuItemRegion;
	var aElements = getDirectChildsByTagName('div', oSubMenuOuterDiv);
	
	for(var i = 0; i < aElements.length; i++){
		if(aElements[i].getElementsByTagName('span').length > 0 && aElements[i].getElementsByTagName('span')[0] && aElements[i].getElementsByTagName('span')[0].innerHTML.length > 0){ // neccassary for ie to avoid height of empty divs
			if(i == iSubMenuNumber){
			
				aSubMenuAnimations[i].stop();
				aSubMenuAnimations[i].attributes.marginTop = {to: 170};
				aSubMenuAnimations[i].animate();
				
			
			}else if(i == iCurrentSubMenu){
				oSubMenuItemRegion = YAHOO.util.Dom.getRegion(aElements[i]);
				
				aSubMenuAnimations[i].stop();
				aSubMenuAnimations[i].attributes.marginTop = {to:170 - (oSubMenuItemRegion.bottom - oSubMenuItemRegion.top)};
				aSubMenuAnimations[i].animate();
				
			}
		}
	}
	iCurrentSubMenu = iSubMenuNumber;
}

function stopMenu(){
	bStopMenu = true;
}



function getDirectChildsByTagName(sTagName, oNode){
	var aReturn = new Array();
	if(oNode){
		var oElements = oNode.getElementsByTagName(sTagName);
		for(var i=0; i<oElements.length; i++){
			if(oElements[i].parentNode == oNode){
				aReturn[aReturn.length] = oElements[i];
			}
		}
	}
	return aReturn;
}

function onWindowResize(){
	oHoverRegion= YAHOO.util.Dom.getRegion(document.getElementById('header_menu_main'));
	oHoverRegion.bottom += 60;
	loadMainMenuArray();
}

var iMouseXPosition;
var iMouseYPosition;
var setMousePosition = function(e){
	if(!e) e = window.event;
    var iXPos = e.clientX
	var iYPos = e.clientY;
    var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? 
    	window.document.documentElement : window.document.body || null;
    if (body) {
        iXPos += body.scrollLeft;
        iYPos += body.scrollTop;
    }
	iMouseXPosition = iXPos;
	iMouseYPosition = iYPos;
};
		
YAHOO.util.Event.addListener("body", "mousemove", setMousePosition);
