/* グロナビ表示 */
var globalNavi = {
	gnavi_name: "gNavi_btn",
	snavi_name: "sNavi_btn",
	pre_place: 99,
	init: function(){
		globalNavi.get_place();

		var httpObj = createXMLHttp();
		if(httpObj){
			httpObj.onreadystatechange = function(){
				if(httpObj.readyState == 4 && httpObj.status == 200){
					var container = document.getElementById("globalNavi");
					if(!container) return false;
					container.innerHTML = httpObj.responseText;
					globalNavi.set_act();
				}
			}
			httpObj.open("get", "/common/tpl/global_navi.html", true);
			httpObj.send("");
		}
	},
	set_act: function(){
		var gNavis = get_element_by_classname(document.getElementsByTagName("body")[0],"gNavi");

		for(var i = 0; i < gNavis.length; i++){
			if(i == globalNavi.pre_place){
				globalNavi.set_place(gNavis[i]);
			}else{
				globalNavi.btn_act(gNavis[i],globalNavi.gnavi_name);
			}
			globalNavi.btn_act(gNavis[i],globalNavi.snavi_name);
			globalNavi.snavi_act(gNavis[i]);
		}
	},
	btn_act: function(pObj,classname){
		var imgs = get_element_by_classname(pObj,classname);
		for(var i = 0; i < imgs.length; i++){
			var hsrc = imgs[i].getAttribute("src").replace(/\.(jpg|gif|png)/, "_on" + "\.$1");
			var plImg = new Image();
			plImg.src = hsrc;
			imgs[i].setAttribute("hsrc", hsrc);
			if(classname == globalNavi.gnavi_name){
				globalNavi.btn_evt(imgs[i],pObj);
			}else{
				globalNavi.btn_evt(imgs[i],imgs[i].parentNode);
			}
		}
	},
	btn_evt: function(img,obj){
		attach_event(obj,"mouseover",
			function(){
				img.setAttribute("src", img.getAttribute("hsrc"));
			}
		);
		attach_event(obj,"mouseout",
			function(){
				var re = "/" + "_on" + "\.(jpg|gif|png)/";
				img.setAttribute("src", img.getAttribute("src").replace(eval(re), "\.$1"));
			}
		);
	},
	snavi_act: function(pObj){
		var sNavis = get_element_by_classname(pObj,"sNavi");
		if(!sNavis[0]) return false;
		globalNavi.snavi_evt(pObj,sNavis[0]);
	},
	snavi_evt: function(pObj,sNavi){
		var snavi_timer;
		attach_event(pObj,"mouseover",
			function (){
				clearTimeout(snavi_timer);
				globalNavi.posi_fix(pObj,sNavi);
				sNavi.style.display = "block";
			}
		);
		attach_event(pObj,"mouseout",
			function (){
				snavi_timer = setTimeout(function(){
					sNavi.style.display = "none";
				},100);
			}
		);
	},
	posi_fix: function(pObj,sNavi){
		sNavi.style.left = globalNavi.get_left(pObj) - 92 + "px";
		sNavi.style.top = globalNavi.get_top(pObj) + pObj.offsetHeight + "px";
	},
	get_left: function(obj){
		var x = 0;
		do{
			x += obj.offsetLeft;
			obj = obj.offsetParent;
		}while(obj)
		return x;
	},
	get_top: function(obj){
		var y = 0;
		do{
			y += obj.offsetTop;
			obj = obj.offsetParent;
		}while(obj)
		return y;
	},
	get_place: function(){
		var domain = "gangan.square-enix.co.jp";
		var pArray = new Array();

		//各ナビに応じたディレクトリ名を定義
		pArray[0] = "new";
		pArray[1] = "next";
		pArray[2] = "comics";
		pArray[3] = "introduction";
		pArray[4] = "prize";
		pArray[5] = "special/custom";
		pArray[6] = "special";

		for(var i = 0; i < pArray.length; i++){
			if(0 < document.URL.indexOf(domain + "/" + pArray[i] + "/",0)){
				globalNavi.pre_place = i;
				break;
			}
		}
	},
	set_place: function(gNavi){
		var imgs = get_element_by_classname(gNavi,globalNavi.gnavi_name);
		imgs[0].setAttribute("src", imgs[0].getAttribute("src").replace(/\.(jpg|gif|png)/, "_on" + "\.$1"));
	}
}

function get_element_by_classname(obj,class_name){
	var j = 0;
	var elt_array = new Array();
	var temp_array = new Array();
	var re = new RegExp("(^|[' '])" + class_name + "($|[' '])" ,"i");

	for(var i = 0; i < obj.childNodes.length; i++){
		if(re.test(obj.childNodes[i].className)){
			elt_array[j] = obj.childNodes[i];
			j ++;
		}
		if(obj.childNodes[i].hasChildNodes()){
			temp_array = get_element_by_classname(obj.childNodes[i],class_name);
			if(temp_array.length > 0){
				elt_array = elt_array.concat(temp_array);
				j += temp_array.length;
			}
		}
	}
	return elt_array;
}

function createXMLHttp(){
	try{
		return new XMLHttpRequest();
	}catch(e){
		try{
			return new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			return null;
		}
	}
}

function attach_event(obj,evt,func){
	if (obj.addEventListener) {  /* Firefox,Safari,Opera */
		obj.addEventListener(evt, func, false);
	}
	else if (obj.attachEvent) {  /* IE4, IE5, IE6, IE7 */
		evt = "on" + evt;
		obj.attachEvent(evt, func);
	}
}

attach_event(window,"load",globalNavi.init);

