﻿(function(){
	function addEvents(elm,listener,fn){
		try{
			elm.addEventListener(listener,fn,false);
		}catch(e){
			elm.attachEvent("on"+listener,fn);
		}
	}
	addEvents(window,"load",function(){
		
	//プルダウン
	var PDMenu = function(menuID,parentClass,childClass,btnClass,currentClass){
	
		var PDMenu = document.getElementById(menuID);

		if (!PDMenu) return false;
		
		//配列の要素に指定のclassがあればelmsClassTagに格納
		var chkClassObj1 = function(obj, ClassName){
			var elmsClassTag = [];
			var obj_count = obj.length;
			for (var i = 0; i < obj_count; i++) {
				if (obj[i].className.match(ClassName)) {
					elmsClassTag.push(obj[i]);
				}
			}
			return elmsClassTag;
		}
		
		//配列の指定タグの中に指定のclassがあればelmsClassTagに格納
		var chkClassObj2 = function(obj, tag, ClassName){
			var elmsClassTag = [];
			var PDChildMenu = obj.getElementsByTagName(tag);
			var PDChildMenu_count = PDChildMenu.length
			for (var j = 0; j < PDChildMenu_count; j++) {
				if (PDChildMenu[j].className.match(ClassName)) {
					elmsClassTag.push(PDChildMenu[j]);
				}
			}
			return elmsClassTag;
		}
		
		//オンマウス時のロールオーバー処理
		var chgImg_on = function(obj){
			var btnImg = obj.getElementsByTagName("IMG");
			var ImgExtension1 = btnImg[0].src.match(/\.[^.]*$/);
			var ImgExtension2 = btnImg[0].src.match(/..\.[^.]*$/);
			if (String(ImgExtension2).match("_o") == null) {
				btnImg[0].setAttribute("src", btnImg[0].src.replace(/\.[^.]*$/, ("_o") + ImgExtension1));
			}
		}
		
		//マウスアウト時のロールオーバー処理
		var chgImg_out = function(obj){
			var btnImg = obj.getElementsByTagName("IMG");
			var ImgExtension = btnImg[0].src.match(/..\.[^.]*$/);
			
			if (String(ImgExtension).match("_o") != null) {
				btnImg[0].setAttribute("src", btnImg[0].src.replace(/_o/, ""));
			}
		}
		
		//プルダウン処理
		var runPD = function(obj, btn, child){
			chk = 0;
			
			if (child != undefined) {
			
				btn.onmouseover = function(){
					chk = 1;
				}
				btn.onmouseout = function(){
					chk = 0;
				}
				obj.onmouseover = function(){
					if (obj.className.match(currentClass) == null) {
						chgImg_on(btn);
					}
					child.style.left = "0";
				}
				obj.onmouseout = function(){
					if (obj.className.match(currentClass) == null) {
						chgImg_out(btn);
					}
					if (chk == 0) {			
						child.style.left = "-9999px";
					}
				}
			}
			else 
				if (child == undefined) {
					if (obj.className.match(currentClass) == null) {
						btn.onmouseover = function(){
							chgImg_on(this)
						}
						btn.onmouseout = function(){
							chgImg_out(this)
						}
					}
				}
		}
		
		//必要な要素を取得したらrunPDを実行
		var checkNavi = function(menu){
			var PDMenuLink = menu.getElementsByTagName("li");
			var parent = chkClassObj1(PDMenuLink, parentClass);
			var parent_count = parent.length;
			for (var i = 0; i < parent_count; i++) {
				var check_btn = chkClassObj2(parent[i], "a", btnClass)[0];
				var check_child = chkClassObj2(parent[i], "ul", childClass)[0];
				check_child.style.left = "-9999px";
				runPD(parent[i], check_btn, check_child);
			}
		}
		
		//checkNaviを実行(必要な要素を取得)
		checkNavi(PDMenu);
	};
	
	//ID名class名を指定してPDMenuSettingを実行
	PDMenu("gnavi","parent","child-menu","btn","unroll");
	
	});
})();
