
window.onload=init;

var linkHandheldHref;
var linkScreenHref;
var resizeFlag=true;

function init() {
	if(initStyle()){
		window.onresize = styleChange;
	}
	styleChange();
	if(top==self){
		_uacct = "UA-61464-1";
		urchinTracker();
		
		if(document.getElementsByTagName && document.createElement) {
			changeImage('r_img');
			changeKanjiIcon();
			addImage('add_img');
			changeClass('ul', 'figure_list', 'figure');
			addDictionary('dic');
		}
	}
	googleMapReplace('dd');
	//googleMap2();
}



function initStyle(){
	linkHandheldHref = getObjFromByLinkTagMedia('handheld').href;
	linkScreenHref =  getObjFromByLinkTagMedia('screen').href;
	return(getObjFromByLinkTagMedia('handheld') && getObjFromByLinkTagMedia('screen'));
}

function styleChange(){
	if(top==self && resizeFlag){
		if(linkHandheldHref && linkScreenHref){
			if(getWindowWidth()<=480){
				getObjFromByLinkTagMedia('screen').href = linkHandheldHref;
			}else{
				getObjFromByLinkTagMedia('screen').href = linkScreenHref;
			}
		}
		resizeFlag=false;
		setTimeout('resizeFlag=true;',1000);
	}
}
function getWindowWidth(){
	if(window.innerWidth) return window.innerWidth; // Mozilla, Opera, NN4
	if(document.documentElement && document.documentElement.clientWidth){ // 以下 IE
		return document.documentElement.clientWidth;
	}else if(document.body && document.body.clientWidth){
		return document.body.clientWidth;
	}
	return 0;
}

function addImage(targetClass) {
	var tagA = document.getElementsByTagName('a');
	if(!tagA) return;
	
	for(var i = 0,j = tagA.length; i < j; i++) {
		if(tagA[i].className == targetClass) {
			var srcName = tagA[i].getAttribute('href');
			var titleName = tagA[i].getAttribute('title');
			if(tagA[i].firstChild.nodeValue) {
				var altName = f_getText(tagA[i]);
				// tagA[i].removeChild(tagA[i].firstChild);
				
				var tagImg = document.createElement('img');
				tagImg.setAttribute('src', srcName);
				tagImg.setAttribute('alt', altName);
				tagImg.setAttribute('title', titleName);
				// サイズが記載されていたら、サイズを変更
				// 書式は w:幅,h:高さ
				if(altName.match(/w:(\d+),h:(\d+)/)){
					tagImg.setAttribute('width', RegExp.$1);
					tagImg.setAttribute('height', RegExp.$2);
					tagA[i].firstChild.nodeValue = tagA[i].firstChild.nodeValue.replace(/\[.*\]/,"");
				}
				
				// 画像の前に改行を追加
				var tagBr = document.createElement('br');
				
				// tagA[i].parentNode.insertBefore(tagBr, tagA[i]);
				// tagA[i].parentNode.insertBefore(tagImg, tagA[i]);
				tagA[i].insertBefore( tagBr , tagA[i].firstChild )
				tagA[i].insertBefore( tagImg , tagA[i].firstChild )


			}
		}
	}
}

function changeImage(targetClass) {
	var tagA = document.getElementsByTagName('a');
	if(!tagA) return;
	
	for(var i = 0,j = tagA.length; i < j; i++) {
		if(tagA[i].className == targetClass) {
			var srcName = tagA[i].getAttribute('href');
			var titleName = tagA[i].getAttribute('title');
			if(tagA[i].firstChild.nodeValue) {
				var altName = f_getText(tagA[i]);
				
				for(;tagA[i].hasChildNodes();){
					tagA[i].removeChild(tagA[i].firstChild);
				}
				
				var tagImg = document.createElement('img');
				tagImg.setAttribute('src', srcName);
				tagImg.setAttribute('alt', altName);
				tagImg.setAttribute('title', titleName);
				// サイズが記載されていたら、サイズを変更
				// 書式は w:幅,h:高さ
				if(altName.match(/w:(\d+),h:(\d+)/)){
					tagImg.setAttribute('width', RegExp.$1);
					tagImg.setAttribute('height', RegExp.$2);
				}
				
				// 画像の前に改行を追加
				// var tagBr = document.createElement('br');
				
				// tagA[i].parentNode.insertBefore(tagBr, tagA[i]);
				// tagA[i].parentNode.insertBefore(tagImg, tagA[i]);
				tagA[i].parentNode.insertBefore(tagImg, tagA[i]);
				//tagA[i].insertBefore( tagImg , tagA[i].firstChild );
			}
		}
	}
}

function changeClass(tagName, classOld, classNew) {
	var tcoll = document.getElementsByTagName(tagName);
	if(!tcoll) return;
	for(var i = 0,j = tcoll.length; i < j; i++) {
		if(tcoll[i].className == classOld) {
			tcoll[i].className = classNew;
		}
	}
}

function changeFlash(targetClass) {
	var tagA = document.getElementsByTagName('a');
	if(!tagA) return;
	
	for(var i = 0,j = tagA.length; i < j; i++) {
		if(tagA[i].className == targetClass) {
			var srcName = tagA[i].getAttribute('href');
			var titleName = tagA[i].getAttribute('title');
			if(tagA[i].firstChild.nodeValue) {
				var altName = f_getText(tagA[i]);
				var tagObj = document.createElement('object');
				// tagA[i].removeChild(tagA[i].firstChild);
				tagObj.setAttribute('type', 'application/x-shockwave-flash');
				tagObj.setAttribute('data', srcName);
				// サイズが記載されていたら、サイズを変更
				// 書式は w:幅,h:高さ
				if(altName.match(/w:(\d+),h:(\d+)/)){
					tagObj.setAttribute('width', RegExp.$1);
					tagObj.setAttribute('height', RegExp.$2);
				}
				// ------------
				var tagParamMovie = document.createElement('param');
				tagParamMovie.setAttribute('value', srcName);
				tagParamMovie.setAttribute('name', 'movie');
				tagObj.appendChild(tagParamMovie);
				// ------------
				var tagParamLoop = document.createElement('param');
				tagParamLoop.setAttribute('value', 'on');
				tagParamLoop.setAttribute('name', 'loop');
				tagObj.appendChild(tagParamLoop);
				// ------------
				var tagParamBgcolor = document.createElement('param');
				tagParamBgcolor.setAttribute('value', '#FFFFFF');
				tagParamBgcolor.setAttribute('name', 'bgcolor');
				tagObj.appendChild(tagParamBgcolor);
				// ------------
				var tagParamQuality = document.createElement('param');
				tagParamQuality.setAttribute('value', 'high');
				tagParamQuality.setAttribute('name', 'quality');
				tagObj.appendChild(tagParamQuality);
				// ------------
				var tagParamWmode = document.createElement('param');
				tagParamWmode.setAttribute('value', 'opaque');
				tagParamWmode.setAttribute('name', 'wmode');
				tagObj.appendChild(tagParamWmode);
				// ------------
				tagA[i].parentNode.insertBefore(tagObj, tagA[i]);
			}
		}
	}
}
/*	辞書追加スクリプト */
	

function addDictionary(targetClass) {
	/* 辞書を追加する。
	   aタグの内classがtargetClassのモノを探し出し、
	   「マウスを重ねた時にポップアップを出す」、
	   「マウスを放した時にポップアップを隠す」
	   それぞれのメソッドを追加。
	   また、aタグのhrefで指定してあるURLの内容をiframeに読み込み
	   IDにlinkframeIDを定義し、aタグとiframeを連携させる。
	   iframeには"linkIframe○"（○は数字）というIDと、
	             "dictionary"というclassが定義される。
	   targetClass:辞書追加する対象のclass指定。aタグ限定 */
	var tagA = document.getElementsByTagName('a');
	if(!tagA) return;
	for(var i = 0,j = tagA.length; i < j; i++) {
		if(tagA[i].className == targetClass) {
			tagA[i].onmouseover = popup;
			tagA[i].onmouseout = hidepopup;
			
			for(var k = 0; k < i; k++){
				if(tagA[i].getAttribute('href') == tagA[k].getAttribute('href')){
					tagA[i].linkIframeID = tagA[k].linkIframeID;
					break;
				}
			}
			if(k == i){
				tagA[i].linkIframeID = 'linkIframe' + i;
				addIframe(tagA[i].getAttribute('href'), tagA[i].linkIframeID, 'dictionary');
			}
		}
	}
}

function addIframe(URL, id, myClass){
	/* iframeをページ末尾に追加する。汎用関数
	   URL:iframeに読み込むURL
	   id：iframeに設定するID
	   myClass：iframeに設定するclass*/
	var tagIframe = document.createElement('iframe');
	tagIframe.setAttribute('name', id);
	tagIframe.setAttribute('id', id);
	tagIframe.setAttribute('src', URL);
	tagIframe.className = myClass;
	
	document.body.appendChild(tagIframe);
}

function popup(e){
	/* aタグに関連付けられたiframeの内容から
	   popupの内容を作成。
	   
	   iframeの中身
	     <h1)用語の見出し</h1>
	     <XX ID="description">用語の説明</XX>
	     <img src="用語の図" ID="dicImage">
		 
	   生成する中身
	     <div id="popup">
		    <h2>■用語の見出し</h2>
		    <p>用語の説明</p>
	        <p  class="illust"><img src="用語の図"></p>
		 </div>
		   
	   生成するdivのコンテナ幅は"300px"として位置を適度に調整 */
	var tagDiv = document.createElement('div');
	tagDiv.id = 'popup';
	// ------------
	var objH2=getObjFromByIframeTag(this.linkIframeID,'h1');
	if(!objH2) return false;
	var tagH2 = document.createElement('h2');
	tagH2.innerHTML = '■ '+ objH2.innerHTML;
	tagDiv.appendChild(tagH2);
	// ------------
	var objP=getObjFromByIframeID(this.linkIframeID,'description');
	if(!objP) return false;
	var tagP = document.createElement('p');
	tagP.innerHTML = f_getText(objP);
	tagDiv.appendChild(tagP);
	// ------------
	var objImg=getObjFromByIframeID(this.linkIframeID,'dicImage');
	if(objImg){
		var tagPIllust = document.createElement('p');
		var tagImg = document.createElement('img');
		tagImg.setAttribute('src', objImg.src);
		tagPIllust.className = 'illust';
		tagPIllust.appendChild(tagImg);
		tagDiv.appendChild(tagPIllust);
	}
	// ------------
	var d = document;
	var BoxWidth = 220; // ポップアップさせるコンテナの幅（単位:px）
	var BodyPadding = 0; // bodyセレクタのpadding-right値（単位:px）
	if(d.all) tagDiv.style.width = BoxWidth + 'px';
	var YY = (d.all) ? d.documentElement.scrollTop + window.event.clientY - 40 : window.pageYOffset + e.clientY - 40 ;
	var XX = (d.all) ? window.event.clientX : window.pageXOffset + e.clientX;
	var differenceX = (d.all) ? d.body.clientWidth - XX : window.innerWidth - XX;
	if( differenceX < BoxWidth ) XX -= BoxWidth + 60;
	var yy = String(YY);
	var xx = String(XX);
	with(tagDiv.style){
		top = yy + 'px';
		left = xx + 'px';
	}
	document.body.appendChild(tagDiv);
	// ------------
	return false;
}

function hidepopup(e){
	/* IDが"popup"のものを削除 */
	while(document.getElementById('popup')){
		var target = document.getElementById('popup');
		target.parentNode.removeChild(target);
	}
}

function getObjFromByIframeID(frm,id){
	/* nameがfrmのiframe内にある、IDがidであるものの
	   オブジェクトを返す　汎用関数 */
	if(self.frames[frm]){
		return self.frames[frm].document.getElementById(id);
	}else{
		return false;
	}
}

function getObjFromByIframeTag(frm,tag){
	/* nameがfrmのiframe内にある、タグ名がtagのものの
	   内、最も最初に出てくるオブジェクトを返す　汎用関数 */
	if(self.frames[frm]){
		return self.frames[frm].document.getElementsByTagName(tag)[0];
	}else{
		return false;
	}
}

function getObjFromByIframeTagClass(frm,tag,myClassName){
	/* nameがfrmのiframe内にある、タグ名がtagのもので
	   class名がmyClassNameであるオブジェクトを返す　汎用関数 */
	var tagObj = self.frames[frm].document.getElementsByTagName(tag);
	if(!tagObj) return;
	for(var i = 0,j = tagObj.length; i < j; i++) {
		if(tagObj[i].className == myClassName) {
			return tagObj[i]
		}
	}
	return false;
}

function f_getText(myObj){
	var nodeText='';
    for (var i=0;i<myObj.childNodes.length;i++){
        if(myObj.childNodes.item(i).nodeType == 3){
            nodeText += myObj.childNodes.item(i).nodeValue;
        }else{
			nodeText += f_getText(myObj.childNodes.item(i));
		}
    }
	return nodeText;
}

function changeKanjiIcon() {
	// タグのフォーマット　<span class="kanji">ユガケ</span>　→　<img src="ユガケのimg　URL">
	var tagSpan = document.getElementsByTagName('span');
	if(!tagSpan) return;
	for(var i = 0,j = tagSpan.length; i < j; i++) {
		if(tagSpan[i].className == "kanji") {
			if(tagSpan[i].firstChild.nodeValue) {
				if(kanji[tagSpan[i].firstChild.nodeValue] == undefined) break;
				var srcName = kanjiDic + kanji[tagSpan[i].firstChild.nodeValue];
				var altName = tagSpan[i].firstChild.nodeValue;
				changeTextToImg(tagSpan[i], srcName, altName, 16, 16);
			}
		}else if(tagSpan[i].className == "icon") {
			if(tagSpan[i].firstChild.nodeValue) {
				if(icon[tagSpan[i].firstChild.nodeValue] == undefined) break;
				var srcName = iconDic + icon[tagSpan[i].firstChild.nodeValue];
				var altName = tagSpan[i].firstChild.nodeValue;
				changeTextToImg(tagSpan[i], srcName, altName, 16, 16);
			}
		}
	}
}

function changeTextToImg(myObj, srcName, altName, widthIcon, heightIcon){
	var tagImg = document.createElement('img');
	tagImg.setAttribute('src', srcName);
	tagImg.setAttribute('alt', altName);
	tagImg.setAttribute('width', widthIcon);
	tagImg.setAttribute('height', heightIcon);
	myObj.replaceChild( tagImg , myObj.firstChild );
	return true;
}

var kanjiDic = "http://ecoecoman.com/kyudo/dictionary/kanji/";
var kanji = {
	"アヅチ"	:"azuchi.gif",
	"カケ"		:"yugake.gif",
	"ガケ"		:"yugake.gif",
	"ハ"		:"ha.gif",
	"ユヅカ"	:"yuzuka.gif",
	"ユガケ"	:"yugake.gif",
	"ﾕｶﾞｹ"	    :"yugake.gif",
	"ヤゴロ"	:"yagoro.gif",
	"レイ"		:"rei.gif"
};

var iconDic = "http://ecoecoman.com/kyudo/icon/";
var icon = {
	"弓具一式"	:"shop_kyugu.gif",
	"弓師"		:"shop_yumishi.gif",
	"矢師"		:"shop_yashi.gif",
	"ユガケ師"	:"shop_yugakeshi.gif",
	"備品"		:"shop_other.gif",
	"<!>"		:"general_caution.gif",
	"日本"				:"country_japan.gif",
	"オーストリー"		:"country_austria.gif",
	"ベルギー"			:"country_belgium.gif",
	"フィンランド"		:"country_finland.gif",
	"フランス"			:"country_france.gif",
	"ドイツ"			:"country_germany.gif",
	"イギリス"			:"country_united_kingdom.gif",
	"アイスランド"		:"country_iceland.gif",
	"イタリア"			:"country_italy.gif",
	"ルクセンブルク"	:"country_luxembourg.gif",
	"オランダ"			:"country_netherlands.gif",
	"ノルウェー"		:"country_norway.gif",
	"ポルトガル"		:"country_portugal.gif",
	"スペイン"			:"country_spain.gif",
	"スイス"			:"country_switzerland.gif",
	"スェーデン"		:"country_sweden.gif",
	"アメリカ"		:"country_usa.gif"
	
};

function getObjFromByLinkTagMedia(myMediaName){
	var tagObj = document.getElementsByTagName('link');
	if(!tagObj) return;
	for(var i = 0,j = tagObj.length; i < j; i++) {
		if(tagObj[i].media == myMediaName) {
			return tagObj[i];
		}
	}
	return false;
}


/* Google Map用　置換
   【HTML側の構造】
   <xxx class="location">
     <span class="address">住所…</span>
	 <span class="map">…</span>
   </xxx>
   ※xxxは置換のターゲットタグ　現在は<dd>のみ
   【仕様】
   上記フォーマットにおいて住所をGoogle Map に提供し、地図を
   mapタグ以下に置き換える。
   【注意】
     <span class="map">以下にdivが多様されるために、
     CSSでdivについて設定している部分はクリア
     しておく必要がある。
   
*/
function googleMapReplace(targetTag) {
	var tag = document.getElementsByTagName(targetTag);
	if(!tag) return;
	for(var i = 0,j = tag.length; i < j; i++) {
		if(tag[i].className == 'location') {
			var tagSpan = tag[i].getElementsByTagName('span');
			for(var k=0, l = tagSpan.length; k < l; k++) {
				if(tagSpan[k].className == 'address') {
					var valueAddress = tagSpan[k].firstChild.nodeValue;
				} else if(tagSpan[k].className == 'map') {
					var objMap = tagSpan[k];
				}
			}
			if(valueAddress != null && objMap != null){
				showAddress(valueAddress, objMap);
			}
		}
	}
}
	  
function showAddress(address, obj) {
	if('function' === typeof GMap2){
	  var map = new GMap2(obj);
	  map.addControl(new GSmallMapControl());
	  map.addControl(new GMapTypeControl());
	  map.addControl(new GScaleControl());
	  map.enableDoubleClickZoom();
	  map.enableContinuousZoom();
	  var geocoder = new GClientGeocoder();
	  geocoder.getLatLng(
		address,
		function(point) {
		  if (point) {
			map.setCenter(point, 16);
			var marker = new GMarker(point);
			map.addOverlay(marker);
		  }
		}
	  );
	}
}

var map_bounds;
var map;
var g_reset_zoom = 1;
var addressCount = 0;
var address = new Array();
function googleMap2(){
	map = new GMap2(document.getElementById("test"));
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GScaleControl());
	map.enableDoubleClickZoom();
	map.enableContinuousZoom();
	
	var geocoder = new GClientGeocoder();
	address[0]="東京都豊島区南大塚3-23-3";
	address[1]="東京都世田谷区桜上水4-8-7　2F";
	address[2]="東京都千代田区神田須田町1-6";
	address[3]="東京都豊島区西巣鴨3-7-1";
	address[4]="東京都杉並区今川3-12-17";
	address[5]="東京都千代田区飯田橋1-7-11";
	address[6]="東京都町田市相原町1236-5";
	address[7]="東京都台東区東上野3-1-14";
	address[8]="東京都港区三田4-8-34";
	address[9]="東京都江戸川区南小岩7-15-9";
	address[10]="東京都台東区元浅草4-9-12";
	for (i in address) {
		geocoder.getLatLng(
			address[i],
			function(point) {
				if (point) {
					map.setCenter(point, 0);
					var marker = new GMarker(point);
					map.addOverlay(marker);
					if(addressCount == 0){
						map_bounds = new GLatLngBounds(point);//もとの表示範囲を追加
					}else{
						map_bounds.extend(point);//全てのマーカーを表示するために追加した地点を登録
					}
					addressCount ++;
				}
			}
		);
	}
	//マーカーを全て地図上に登録したので、それが全て表示されるように倍率を調整
	
	wait();
	// alert(addressCount + "：" + address.length);
}
function wait(){
	if(addressCount != address.length){
		setTimeout('wait()', 100);
	}else{
		map.setCenter( map_bounds.getCenter(), map.getBoundsZoomLevel(map_bounds) );
	}
}
