var timer;  

var parent = 5;      // 親プルダウンの数
var child = 6;    // 子プルダウンの数,子プルダウンを内包する親プルダウンの項目数
var noChild = 35;   // 子プルダウンを内包しない親プルダウンの項目数

var topMenu = null;
var openedMenu = null;

function keepMenu() {
    clearTimeout(timer);
}

function requestHide() {
    timer = setTimeout("hideMenus()", 250);
}

function hideMenus() {
var	pull = getElementsByClass("pdm");
    for (var i = 0; i < pull.length; i++) {
       pull[i].style.visibility = "hidden";
    }
	OpenedMenu = null;
	topMenu = null;
}

function menuOvr(e){
	var elem = targetNode(e);
	
	for(var i = 1; i < child +1; i++){
			if(elem.id == "pc" + i){			
			var id = "pull-child" + i;
			
			break;
		}

	}
	
	if (openedMenu && openedMenu != id){
		CloseMenu();
	}

	OpenMenu(id);
}

function topPull(e){ 

    hideMenus();
	var elem = targetNode(e);
			for(var i = 1; i < parent +1; i++){
			if(elem.id == "pull-f" + i){			
			var id = "pull" + i;
			
			break;
		}

	}
	
    document.getElementById( id).style.visibility = "visible";
	keepMenu();
	topMenu = id;
}
function OpenMenu(id){ 
    document.getElementById( id ).style.visibility = "visible";
	keepMenu();
	openedMenu = id;
}

function CloseMenu(){ 
if(typeof topMenu != "null" && document.getElementById( openedMenu )) {
	document.getElementById( openedMenu ).style.visibility = "hidden";
	openedMenu = null;
}

}

function init(){
	
for(var i = 1; i < parent +1; i++){
	
	var pullF = new Array;
	var pull = new Array;
	
	pullF[i] = document.getElementById('pull-f' + i);
	pull[i] = document.getElementById('pull' + i);
	addEvents(pullF[i], "mouseover", topPull);
	addEvents(pullF[i], "mouseout", requestHide);
	addEvents(pull[i], "mouseover", keepMenu);
	addEvents(pull[i], "mouseout", requestHide);
}

for(var j = 1; j < child +1; j++){
	
	var pc = new Array;
	
    pc[j] = document.getElementById('pc' + j);
	addEvents(pc[j], "mouseover", menuOvr);
	
}

for(var k = 1; k < noChild +1; k++){
	
	var npc = new Array;
	
    npc[k] = document.getElementById('npc' + k);
	addEvents(npc[k], "mouseover", CloseMenu);
	
}
	
}

function setEvents(){
	
	var pulls1 = getElementsByClass('pulls');
	for (var i = 0; i < pulls1.length; i++) {
			pulls1[i].onmouseover = function(){this.className = 'on';};
			pulls1[i].onmouseout = function(){this.className = 'off';};
	}
	var pulls2 = getElementsByClass('sub-pulls');
	for (var i = 0; i < pulls2.length; i++) {
			pulls2[i].onmouseover = function(){this.className = 'on2';};
			pulls2[i].onmouseout = function(){this.className = 'off2';};
		
	}
}

addLoadEvent(setEvents);
addLoadEvent(init);

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function targetNode(e) {
		 var target_node;
    if(e.target) {
      target_node = e.target;
    } else if(e.srcElement) {
      target_node = e.srcElement;
    }
    if (target_node.nodeType == 3) {
        target_node = target_node.parentNode;
    }
	return target_node;
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

function addEvents(elem, eventType, func) {
    if(elem.addEventListener) {
        elem.addEventListener(eventType, func, false);
    } else if(elem.attachEvent) {
        elem.attachEvent('on' + eventType, func);
    } else {
        return false;
    }
}

function doNothing(){return true;};onerror = doNothing;