
/* AutoSwap
----------------------------------------------- */

//auto swapの自動設定
function setAutoSwap(){
	ie = document.all ? true : false;
	var t=document.getElementsByTagName("a") , a=new Array;
	for(var i=0 ; i<t.length ; i++){
		if(t[i].parentNode.parentNode.id.substr(0,5)=="navi-") continue;
		if(t[i].className=="swapImage" && t[i].firstChild.nodeName=="IMG"){
			t[i].onmouseover = function(){autoSwap(this, true );}
			t[i].onmouseout  = function(){autoSwap(this, false);}
			a[i] = t[i].firstChild.src;
		}
	}
	if(document.images) preloadImages(a)
}

//イメージのプリロード
function preloadImages(ia){
	var preloader = new Array()
	for(i=0 ; i<ia.length ; i++){
		preloader[i] = new Image();
		preloader[i].src = ia[i];
	}
}

//スワップイメージの動作
function autoSwap(e, ov){
	var eo = e.firstChild;
	//eo = (ie) ? event.srcElement : e.target;
	var idx		= eo.src.lastIndexOf(".");
	var file	= eo.src.substr(idx);
	var path  = eo.src.substr(0, idx);
	var last3 = eo.src.substr(idx-3, 3);
	if(last3=="_ov") path = eo.src.substr(0, idx-3);
	eo.src = ov==true ? path + "_ov" + file : path + file;
}

/* Popups
----------------------------------------------- */

function setMenuPopups(navStr){
	// local global var
	var subMenuScope;
	var intervalId;
	
	// scopes
	var navElementById = "navigation";
	var nav   = document.getElementById(navElementById);//設定するnaviを指定
	if(!nav) return;

	var links = nav.getElementsByTagName("a");
	if(!links) return;
	
	// functions
	var showSubMenu = function(){
		subMenuScope.style.display = "block";
		autoSwap(subMenuScope.swapTarget, true);
		if(intervalId) clearInterval(intervalId);
	}
	var hideSubMenu = function(q){
		if(!subMenuScope) return;
		if(intervalId){
			clearInterval(intervalId);
			intervalId = null;
		}
		if(q==true){
			subMenuScope.style.display = "none";
			autoSwap(subMenuScope.swapTarget, false);
		}else{
			var func = function(){
				subMenuScope.style.display = "none";
				autoSwap(subMenuScope.swapTarget, false);
				clearInterval(intervalId);
				intervalId = null;
			}
			
			var anc = navigator.appName == "Microsoft Internet Explorer" || navigator.appName == "MSIE" ? true : false;
			var uac = navigator.userAgent.lastIndexOf("Mac")!=-1;
			var avc = navigator.appVersion.charAt(0)>=4;
			if(anc==true && uac==true && avc==true){
				func();
			}else{
				intervalId = setInterval(func, 350);
			}
		}
	}
	
	// setting
	for(var i=0; i<links.length; i++){
		var item = links[i].parentNode;
		if(item.id.substr(0,5)=="navi-" && item.tagName=="TD"){
			
			var name = item.id.substr(5);
			var submenu = getSubMenuHtml(name);
			if(submenu){//submenuの生成
				
				var ul = document.getElementById(item.id).getElementsByTagName("ul");
				if(ul.length>0){
					ul[0].innerHTML = submenu;
				}
				
				//document.getElementById(item.id).innerHTML += submenu;
			}
			
			var sid = item.id+"-sub";
			var subs = document.getElementById(sid);
			if(subs){
				if(item.firstChild.className = "swapImage" && item.firstChild.firstChild.nodeName=="IMG"){
					subs.swapTarget = item.firstChild;
				}
				item.linkMenuScope = subs;
				item.onmouseover = function(){
					if(subMenuScope != this.linkMenuScope) hideSubMenu(true);
					subMenuScope = this.linkMenuScope;
					showSubMenu();
				}
				item.onmouseout = function(){
					hideSubMenu();
				}
				for(var j=0; j<subs.childNodes.length; j++){
					var sub = subs.childNodes[j];
					if(sub.nodeName=="LI"){
						sub.linkMenuScope = subs;
						sub.onmouseover = function(){
							if(subMenuScope != this.linkMenuScope) hideSubMenu(true);
							subMenuScope = this.linkMenuScope;
							showSubMenu();
						}
						sub.onmouseout = function(){
							hideSubMenu();
						}
					}
				}
			}
		}
	}
}

function traceClear(){
	document.getElementById("traceView").innerHTML = "";
}

function trace(str, src){
	if(src){
		str = str.split("<").join("&lt;").split(">").join("&gt;").split("\n").join("<br>");
		//while(str.indexOf("<")!=-1) str = str.replace("<", "&lt;");
		//while(str.indexOf(">")!=-1) str = str.replace(">", "&gt;");
		//while(str.indexOf("\n")!=-1) str = str.replace("\n", "<br>");
	}
	document.getElementById("traceView").innerHTML = str+"<br>"+document.getElementById("traceView").innerHTML;
}


/* StripeTable
----------------------------------------------- */

function standbyStripeTable(className, colA, colB){
	ie = document.all ? true : false;//ブラウザ分岐
	//a imgタグの抽出
	var t=document.getElementsByTagName("table"), a=new Array;
	for(var i=0; i<t.length; i++){
		if(t[i].className==className){
			setStripeTable(t[i], colA, colB);
		}
	}
}

//指定されたobjectへstripeを設定
function setStripeTable(tgt, colA, colB) {
	var even = false;//カラータイプの設定
	//デフォルトのカラー設定
	var colA = colA || "#EBF0F4";
	var colB = colB || "#FAFBFD";
	var hasClass = function(o){//クラスの有無をチェック
		return typeof o.className=="string" ? o.className : false;
	}
	
	var setCellColor = function(tagName, trs){
		var tds = trs[i].getElementsByTagName(tagName);
		if(!tds[0]) return;
		if(row<=0) row = tds[0].rowSpan;//row0ごとにマージ数をチェック
		if (!hasClass(trs[i]) && !trs[i].style.backgroundColor){//backgroundの設定された行は無視
			//tdノードの走査と設定
			for (var j = 0; j<tds.length; j++) {
				var td = tds[j];
				if (!hasClass(td) && !td.style.backgroundColor){//backgroundの設定された列は無視
					td.style.backgroundColor = even ? colA : colB;
				}// end if
			}// end for
		}// end if
	}
	
	var table = tgt;
	if (!table) { return; }//指定されたIDが無ければ処理終了
	
	var tbodies = table.getElementsByTagName("tbody");
	for (var h=0; h<tbodies.length; h++){
	
		var trs = tbodies[h].getElementsByTagName("tr");
		var row = 0;//セルのマージ数カウント用
		for (var i=0; i<trs.length; i++){
			//setCellColor("th", trs);
			setCellColor("td", trs);
			if(--row<=0) even = !even;//tdの最初のセルがマージされていなければカラー切り替え
		}// end for
		
	}
}


/* onload
----------------------------------------------- */


window.onload = function(){
	setAutoSwap();
	setMenuPopups();
	standbyStripeTable('stripe');
}