/************************************************************************************************************
(C) www.dhtmlgoodies.com, October 2005

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/

var dhtmlgoodies_menuObj;
var currentZIndex = 1000;
var liIndex = 0;
var visibleMenus = new Array();
var activeMenuItem = false;
var timeBeforeAutoHide = 1200;
var dhtmlgoodies_menu_arrow = "http://chotto-sekaini.ddo.jp/main_menu/img/arrow.gif";

var MSIE = navigator.userAgent.indexOf('MSIE')>=0?true:false;
var navigatorVersion = navigator.appVersion.replace(/.*?MSIE ([0-9]\.[0-9]).*/g,'$1')/1;
var menuBlockArray = new Array();
var menuParentOffsetLeft = false;
function getTopPos(inputObj)
{

  var returnValue = inputObj.offsetTop;
  if(inputObj.tagName=='LI' && inputObj.parentNode.className=='menuBlock1'){
  	var aTag = inputObj.getElementsByTagName('A')[0];
  	if(aTag)returnValue += aTag.parentNode.offsetHeight;
  }
  while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetTop;

  return returnValue;
}

function getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft;
  return returnValue;
}

function showHideSub()
{

	var attr = this.parentNode.getAttribute('currentDepth');
	if(navigator.userAgent.indexOf('Opera')>=0){
		attr = this.parentNode.currentDepth;
	}

	this.className = 'currentDepth' + attr + 'over';

	/* swap image to large -kem- */
	swapImg = this.getElementsByTagName('IMG')[0];
	if(swapImg){
		swapImg.src = '/main_menu/img/' + swapImg.id + '_2.gif';
	}

	if(activeMenuItem && activeMenuItem!=this){
		activeMenuItem.className=activeMenuItem.className.replace(/over/,'');
	}
	activeMenuItem = this;

	var numericIdThis = this.id.replace(/[^0-9]/g,'');
	var exceptionArray = new Array();
	// Showing sub item of this LI
	var sub = document.getElementById('subOf' + numericIdThis);
	if(sub){
		visibleMenus.push(sub);
		sub.style.display='';
		sub.parentNode.className = sub.parentNode.className + 'over';
		exceptionArray[sub.id] = true;
	}


	var parent = this.parentNode;
	while(parent && parent.id && parent.tagName=='UL'){
		visibleMenus.push(parent);
		exceptionArray[parent.id] = true;
		parent.style.display='';

		var li = document.getElementById('dhtmlgoodies_listItem' + parent.id.replace(/[^0-9]/g,''));
		if(li.className.indexOf('over')<0)li.className = li.className + 'over';
		parent = li.parentNode;

	}

	hideMenuItems(exceptionArray);
}

/* swap image to small -kem- */
function swapImageToSmall(){
	swapImg = this.getElementsByTagName('IMG')[0];
	if(swapImg){
		swapImg.src = '/main_menu/img/' + swapImg.id + '.gif';
	}
}

function hideMenuItems(exceptionArray)
{
	var newVisibleMenuArray = new Array();
	for(var no=0;no<visibleMenus.length;no++){
		if(visibleMenus[no].className!='menuBlock1' && visibleMenus[no].id){
			if(!exceptionArray[visibleMenus[no].id]){
				var el = visibleMenus[no].getElementsByTagName('A')[0];
				visibleMenus[no].style.display = 'none';
				var li = document.getElementById('dhtmlgoodies_listItem' + visibleMenus[no].id.replace(/[^0-9]/g,''));
				if(li.className.indexOf('over')>0)li.className = li.className.replace(/over/,'');
			}else{
				newVisibleMenuArray.push(visibleMenus[no]);
			}
		}
	}
	visibleMenus = newVisibleMenuArray;
}



var menuActive = true;
var hideTimer = 0;
function mouseOverMenu()
{
	menuActive = true;
}

function mouseOutMenu()
{
	menuActive = false;
	timerAutoHide();
}

function timerAutoHide()
{
	if(menuActive){
		hideTimer = 0;
		return;
	}

	if(hideTimer<timeBeforeAutoHide){
		hideTimer+=100;
		setTimeout('timerAutoHide()',99);
	}else{
		hideTimer = 0;
		autohideMenuItems();
	}
}

function autohideMenuItems()
{
	if(!menuActive){
		hideMenuItems(new Array());
		if(activeMenuItem)activeMenuItem.className=activeMenuItem.className.replace(/over/,'');
	}
}


function initSubMenus(inputObj,initOffsetLeft,currentDepth)
{
	var subUl = inputObj.getElementsByTagName('UL');
	if(subUl.length>0){
		var ul = subUl[0];

		ul.id = 'subOf' + inputObj.id.replace(/[^0-9]/g,'');
		ul.setAttribute('currentDepth' ,currentDepth);
		ul.currentDepth = currentDepth;
		ul.className='menuBlock' + currentDepth;
		ul.onmouseover = mouseOverMenu;
		ul.onmouseout = mouseOutMenu;
		currentZIndex+=1;
		ul.style.zIndex = currentZIndex;
		menuBlockArray.push(ul);
		var topPos = getTopPos(inputObj);
		var leftPos = getLeftPos(inputObj)/1 + initOffsetLeft/1;
		ul = dhtmlgoodies_menuObj.appendChild(ul);
		ul.style.position = 'absolute';
		ul.style.left = leftPos + 'px';
		ul.style.top = topPos + 'px';
		var li = ul.getElementsByTagName('LI')[0];

		while(li){
			if(li.tagName=='LI'){
				li.className='currentDepth' + currentDepth;
				li.id = 'dhtmlgoodies_listItem' + liIndex;
				liIndex++;
				var uls = li.getElementsByTagName('UL');
				li.onmouseover = showHideSub;
				li.onmouseout = swapImageToSmall;	// -kem-

				if(uls.length>0){
					var offsetToFunction = li.getElementsByTagName('A')[0].offsetWidth; // +2をはずす -kem-
					if(navigatorVersion<6 && MSIE)offsetToFunction+=15;	// MSIE 5.x fix
					initSubMenus(li,offsetToFunction,(currentDepth+1));
				}
				if(MSIE){
					var a = li.getElementsByTagName('A')[0];
					a.style.width=li.offsetWidth+'px';
					a.style.display='block';
					if(currentDepth != 1){
						li.style.height = li.offsetHeight - 3 + 'px'; // 画像間の縦のスキマを調整 -kem-
					}
				}
			}
			li = li.nextSibling;
		}
		ul.style.display = 'none';
		if(!document.all){
			//dhtmlgoodies_menuObj.appendChild(ul);
		}
	}
}


function resizeMenu()
{
	var offsetParent = getLeftPos(dhtmlgoodies_menuObj);

	for(var no=0;no<menuBlockArray.length;no++){
		var leftPos = menuBlockArray[no].style.left.replace('px','')/1;
		menuBlockArray[no].style.left = leftPos + offsetParent - menuParentOffsetLeft + 'px';
	}
	menuParentOffsetLeft = offsetParent;
}

/*
メニューの初期化
*/
function initDhtmlGoodiesMenu()
{
	dhtmlgoodies_menuObj = document.getElementById('dhtmlgoodies_menu');

	var aTags = dhtmlgoodies_menuObj.getElementsByTagName('A');
	for(var no=0;no<aTags.length;no++){

//		var subUl = aTags[no].parentNode.getElementsByTagName('UL');
//		if(subUl.length>0 && aTags[no].parentNode.parentNode.parentNode.id != 'dhtmlgoodies_menu'){
//			var img = document.createElement('IMG');
//			img.src = dhtmlgoodies_menu_arrow;
//			aTags[no].appendChild(img);
//		}

	}

	var mainMenu = dhtmlgoodies_menuObj.getElementsByTagName('UL')[0];
	mainMenu.className='menuBlock1';
	mainMenu.style.zIndex = currentZIndex;
	mainMenu.setAttribute('currentDepth' ,1);
	mainMenu.currentDepth = '1';
	mainMenu.onmouseover = mouseOverMenu;
	mainMenu.onmouseout = mouseOutMenu;

	var mainMenuItemsArray = new Array();
	var mainMenuItem = mainMenu.getElementsByTagName('LI')[0];
	/* メニューの高さを微調整 2px⇒4px -kem- */
	mainMenu.style.height = mainMenuItem.offsetHeight + 2 + 'px';
//	mainMenu.style.height = 22 + 'px';
	while(mainMenuItem){

		mainMenuItem.className='currentDepth1';
		mainMenuItem.id = 'dhtmlgoodies_listItem' + liIndex;
		mainMenuItem.onmouseover = showHideSub;
		mainMenuItem.onmouseout = swapImageToSmall;	// -kem-

		liIndex++;
		if(mainMenuItem.tagName=='LI'){
			mainMenuItem.style.cssText = 'float:left;';
			mainMenuItem.style.styleFloat = 'left';
			mainMenuItemsArray[mainMenuItemsArray.length] = mainMenuItem;
			initSubMenus(mainMenuItem,0,2);
		}

		mainMenuItem = mainMenuItem.nextSibling;

	}

	for(var no=0;no<mainMenuItemsArray.length;no++){
		initSubMenus(mainMenuItemsArray[no],0,2);
	}

	menuParentOffsetLeft = getLeftPos(dhtmlgoodies_menuObj);
	window.onresize = resizeMenu;
	dhtmlgoodies_menuObj.style.visibility = 'visible';
}

function loadMainMenu(){
	mainMenuAjax = new Ajax.Request(
		"/main_menu/index.html",
		{
			method: 'get',
			onComplete:function(responseHttpObj){
						$("dhtmlgoodies_menu").innerHTML = responseHttpObj.responseText;
						initDhtmlGoodiesMenu();
					}
		});
}

function swapImage(obj,src){
	obj.src = src;
}
