
//----------------------------------------------------------
//    DOM HTML
//    Ver 0.9.3
//----------------------------------------------------------
//  Get elements by class name
document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className.split(" ");
		for (var j = 0; j < classes.length; j++) {
			var className = classes[j];
			if (className == cl) {
				retnode.push(elem[i]);
			}
		}
	}
	return retnode;
}

var DomHTML = {

	//-------------------------------------------------------
	//    Document width
	//-------------------------------------------------------
	getDocumentWidth: function (_document) {
		if (!_document) { _document = document;}
		if(_document.body) {
			if(_document.body.scrollWidth || _document.body.scrollWidth == 0) {
				return _document.body.scrollWidth;
			}
			if(_document.documentElement) {
				return _document.documentElement.offsetWidth;
			}
			return _document.body.offsetWidth;
		}
	
		if(_document.width || _document.width == 0) {
			return _document.width;
		}
		return 0;
	},


	//-------------------------------------------------------
	//    Get scroll top
	//-------------------------------------------------------
	getScrollTop: function() {
		if(window.scrollY) { return window.scrollY;}
		if(window.pageYOffset) { return window.pageYOffset;}
		if(document.documentElement && document.documentElement.scrollTop){
			return document.documentElement.scrollTop;
		} else if(document.body && document.body.scrollTop) {
			return document.body.scrollTop;
		}
		return 0;
	},


	//-------------------------------------------------------
	//    Document height
	//-------------------------------------------------------
	getDocumentHeight: function () {
		if(document.body) {
			if(document.body.scrollHeight || document.body.scrollHeight == 0) {
				return document.body.scrollHeight;
			}
			if(document.documentElement) {
				return document.documentElement.offsetHeight;
			}
			return document.body.offsetHeight;
		}	
		if(document.height || document.height == 0) {
			return document.height;
		}
		return 0;
	},


	//-------------------------------------------------------
	//    Effects
	//-------------------------------------------------------
	effects: {

		//-----------------------
		//  Set width
		//-----------------------
		width: function(_target, _width, _fade) {
			var current = _target.offsetWidth;
			if (!_fade) {
				var width = _width;
			} else {
				var width = current + ((_width - current) / _fade);
				if (width != current) {
					setTimeout(function() { DomHTML.effects.width(_target, _width, _fade / 1.25)}, 50);
				}
			}
			_target.style.width = width + "px";
		},

		//-----------------------
		//  Set opacity
		//-----------------------
		opacity: function(_target, _opacity, _fade, _fadetype) {
			var current = _target.style.opacity * 100;
			if (!_fade) {
				var opacity = _opacity;
			} else {
				var opacity = Math.round(current + ((_opacity - current) / _fade));
				if (opacity != current) {
					setTimeout(function() { DomHTML.effects.opacity(_target, _opacity, _fade / 1.25)}, 50);
				}
			}
			_target.style.zoom = 1;
			_target.style.filter = 'alpha(opacity=' + (opacity) + ')';
			_target.style.MozOpacity = opacity / 100;
			_target.style.opacity = opacity / 100;
		}
	},


	//-------------------------------------------------------
	//    Add event
	//-------------------------------------------------------
	addEvent: function(elemObj, eventType, funcName, useCapture) {
		if (!elemObj) { return false;}
		if (elemObj.addEventListener){
			elemObj.addEventListener(eventType, funcName, useCapture);
		} else if (elemObj.attachEvent){
			elemObj.attachEvent("on"+eventType, funcName);
		} else {
			return false;
		}
		return true;
	}

};

var threeSHallSearchHTML = {

	//-------------------------------------------------------
	//    ナビゲーションを設定
	//-------------------------------------------------------
	start:function () {
		if (!document.getElementById("knowledge-hall-search-area")) { return;}
		var nav = document.getElementById("knowledge-hall-search-area");
		var pref = threeSHallSearchVars.getPref();
		var area = threeSHallSearchVars.getArea();
		var navHTML = "<ul class=\"Navigation\">";
		var bodyHTML = "";
		var pmax = pref.length;
		for (var p = 0; p < pmax; p++) {
			var prefName = pref[p];
			var anchor = "<a href=\"javascript: threeSHallSearchHTML.setPref(" + p + ")\">" + prefName + "</a>";
			navHTML += "<li class=\"PrefNav" + p + "\">" + anchor + "</li>";
			bodyHTML += "<p " + "class=\"Pref" + p + "\"" + " style=\"display: none;\">";
			var areaHTML = Array ();
			var amax = area[p].length;
			for (var a = 0; a < amax; a++) {
				var areaName = area[p][a];
				areaHTML[a] = "<a href=\"javascript: threeSHallSearch.setMap('" + prefName + " " + areaName + "')\">" + areaName + "</a>";
			}
			bodyHTML += areaHTML.join(" | ");
			bodyHTML += "</p>";
		}
		navHTML += "</ul>";
		var startPref = nav.innerHTML;
		nav.innerHTML = navHTML + bodyHTML;
		threeSHallSearchHTML.setPref(startPref);
	},


	//-------------------------------------------------------
	//    県セット
	//-------------------------------------------------------
	setPref: function(prefNum) {
		var prefs = threeSHallSearchVars.getPref();
		var pmax = prefs.length;
		for (var p = 0; p < pmax; p++) {
			if (p == prefNum) {
				var display = "block";
				var className = "PrefNav" + p + " Current";
				var elemHeight = "30px";
			} else {
				var display = "none";
				var className = "PrefNav" + p ;
				var elemHeight = "29px";
			}
			//  Body
			var prefElems = document.getElementsByClassName("Pref" + p);
			var imax = prefElems.length;
			for (var i = 0; i < imax; i++) {
				prefElems[i].style.display = display;
			}
			//  Nav
			var prefElems = document.getElementsByClassName("PrefNav" + p);
			var imax = prefElems.length;
			for (var i = 0; i < imax; i++) {
				prefElems[i].className = className;
				prefElems[i].firstChild.style.height = elemHeight;
			}
		}
	}
}


//---------------------------------------------------------
//    県・市区町村を取得
//---------------------------------------------------------
var threeSHallSearchVars = {

	//-------------------------------------------------------
	//    県
	//-------------------------------------------------------
	getPref: function() {
		var t = Array ();
		t[0] = "東京都";
		t[1] = "神奈川県";
		t[2] = "千葉県";
		t[3] = "埼玉県";
		return t;
	},


	//-------------------------------------------------------
	//    市区町村
	//-------------------------------------------------------
	getArea: function() {

		var t = Array ();

		//  東京
		t[0] = Array ();
		t[0][0] = "千代田区"; t[0][1] = "中央区"; t[0][2] = "港区"; t[0][3] = "新宿区"; t[0][4] = "文京区";
		t[0][5] = "台東区"; t[0][6] = "墨田区"; t[0][7] = "江東区"; t[0][8] = "品川区"; t[0][9] = "目黒区";
		t[0][10] = "大田区"; t[0][11] = "世田谷区"; t[0][12] = "渋谷区"; t[0][13] = "中野区"; t[0][14] = "杉並区";
		t[0][15] = "豊島区"; t[0][16] = "北区"; t[0][17] = "荒川区"; t[0][18] = "板橋区"; t[0][19] = "練馬区";
		t[0][20] = "足立区"; t[0][21] = "葛飾区"; t[0][22] = "江戸川区"; t[0][23] = "八王子市"; t[0][24] = "立川市";
		t[0][25] = "武蔵野市"; t[0][26] = "三鷹市"; t[0][27] = "青梅市"; t[0][28] = "府中市"; t[0][29] = "昭島市";
		t[0][30] = "調布市"; t[0][31] = "町田市"; t[0][32] = "小金井市"; t[0][33] = "小平市"; t[0][34] = "日野市";
		t[0][35] = "東村山市"; t[0][36] = "国分寺市"; t[0][37] = "国立市"; t[0][38] = "福生市"; t[0][39] = "狛江市";
		t[0][40] = "東大和市"; t[0][41] = "清瀬市"; t[0][42] = "東久留米市"; t[0][43] = "武蔵村山市"; t[0][44] = "多摩市";
		t[0][45] = "稲城市"; t[0][46] = "羽村市"; t[0][47] = "あきる野市"; t[0][48] = "西東京市";t[0][49] = "西多摩郡";
		
		//  神奈川
		t[1] = Array ();
		t[1][0] = "横浜市鶴見区"; t[1][1] = "横浜市神奈川区"; t[1][2] = "横浜市西区"; t[1][3] = "横浜市中区"; t[1][4] = "横浜市南区";
		t[1][5] = "横浜市港南区"; t[1][6] = "横浜市保土ヶ谷区"; t[1][7] = "横浜市旭区"; t[1][8] = "横浜市磯子区"; t[1][9] = "横浜市金沢区";
		t[1][10] = "横浜市港北区"; t[1][11] = "横浜市緑区"; t[1][12] = "横浜市青葉区"; t[1][13] = "横浜市都筑区"; t[1][14] = "横浜市戸塚区";
		t[1][15] = "横浜市栄区"; t[1][16] = "横浜市泉区"; t[1][17] = "横浜市瀬谷区"; t[1][18] = "川崎市川崎区"; t[1][19] = "川崎市幸区";
		t[1][20] = "川崎市中原区"; t[1][21] = "川崎市高津区"; t[1][22] = "川崎市宮前区"; t[1][23] = "川崎市多摩区"; t[1][24] = "川崎市麻生区";
		t[1][25] = "相模原市"; t[1][26] = "横須賀市"; t[1][27] = "鎌倉市"; t[1][28] = "逗子市"; t[1][29] = "三浦市";
		t[1][30] = "葉山町"; t[1][31] = "厚木市"; t[1][32] = "大和市"; t[1][33] = "海老名市"; t[1][34] = "座間市";
		t[1][35] = "綾瀬市"; t[1][36] = "愛川町"; t[1][37] = "清川村"; t[1][38] = "平塚市"; t[1][39] = "藤沢市";
		t[1][40] = "茅ヶ崎市"; t[1][41] = "秦野市"; t[1][42] = "伊勢原市"; t[1][43] = "寒川町"; t[1][44] = "大磯町";
		t[1][45] = "二宮町"; t[1][46] = "南足柄市"; t[1][47] = "中井町"; t[1][48] = "大井町"; t[1][49] = "松田町";
		t[1][50] = "山北町"; t[1][51] = "開成町"; t[1][52] = "小田原市"; t[1][53] = "箱根町"; t[1][54] = "真鶴町";
		t[1][55] = "湯河原町";
		
		//  千葉
		t[2] = Array ();
		t[2][0] = "市川市"; t[2][1] = "船橋市"; t[2][2] = "浦安市"; t[2][3] = "鎌ヶ谷市"; t[2][4] = "松戸市";
		t[2][5] = "柏市"; t[2][6] = "我孫子市"; t[2][7] = "流山市"; t[2][8] = "野田市"; t[2][9] = "成田市";
		t[2][10] = "白井市"; t[2][11] = "印西市"; t[2][12] = "酒々井町"; t[2][13] = "栄町"; t[2][14] = "本埜村";
		t[2][15] = "印旛村"; t[2][16] = "富里市"; t[2][17] = "香取市"; t[2][18] = "旭市"; t[2][19] = "銚子市";
		t[2][20] = "匝瑳市"; t[2][21] = "神崎町"; t[2][22] = "多古町"; t[2][23] = "東庄町";t[2][24] = "千葉市中央区";
		t[2][25] = "千葉市花見川区"; t[2][26] = "千葉市稲毛区"; t[2][27] = "千葉市若葉区"; t[2][28] = "千葉市美浜区"; t[2][29] = "千葉市緑区";
		t[2][30] = "市原市"; t[2][31] = "佐倉市"; t[2][32] = "習志野市"; t[2][33] = "八千代市"; t[2][34] = "四街道市";
		t[2][35] = "八街市"; t[2][36] = "東金市"; t[2][37] = "大網白里町"; t[2][38] = "茂原市"; t[2][39] = "勝浦市";
		t[2][40] = "山武市"; t[2][41] = "いすみ市"; t[2][42] = "館山市"; t[2][43] = "木更津市"; t[2][44] = "鴨川市";
		t[2][45] = "君津市"; t[2][46] = "富津市"; t[2][47] = "袖ケ浦市"; t[2][48] = "南房総市"; t[2][49] = "九十九里町";
		t[2][50] = "芝山町"; t[2][51] = "横芝光町"; t[2][52] = "長生村"; t[2][53] = "一宮町"; t[2][54] = "睦沢町";
		t[2][55] = "白子町"; t[2][56] = "長柄町"; t[2][57] = "長南町"; t[2][58] = "大多喜町"; t[2][59] = "御宿町";
		t[2][60] = "鋸南町";
		
		//  埼玉
		t[3] = Array ();
		t[3][0] = "さいたま市西区"; t[3][1] = "さいたま市北区"; t[3][2] = "さいたま市大宮区"; t[3][3] = "さいたま市見沼区"; t[3][4] = "さいたま市中央区";
		t[3][5] = "さいたま市桜区"; t[3][6] = "さいたま市浦和区"; t[3][7] = "さいたま市南区"; t[3][8] = "さいたま市緑区"; t[3][9] = "さいたま市岩槻区";
		t[3][10] = "川口市"; t[3][11] = "鳩ヶ谷市"; t[3][12] = "蕨市"; t[3][13] = "戸田市"; t[3][14] = "上尾市"; 
		t[3][15] = "桶川市"; t[3][16] = "北本市"; t[3][17] = "鴻巣市"; t[3][18] = "伊奈町"; t[3][19] = "川越市";
		t[3][20] = "所沢市"; t[3][21] = "狭山市"; t[3][22] = "入間市"; t[3][23] = "富士見市"; t[3][24] = "新座市";
		t[3][25] = "志木市"; t[3][26] = "朝霞市"; t[3][27] = "和光市"; t[3][28] = "ふじみ野市"; t[3][29] = "三芳町";
		t[3][30] = "坂戸市"; t[3][31] = "鶴ヶ島市"; t[3][32] = "飯能市"; t[3][33] = "日高市"; t[3][34] = "毛呂山町";
		t[3][35] = "越生町"; t[3][36] = "東松山市"; t[3][37] = "滑川町"; t[3][38] = "嵐山町"; t[3][39] = "小川町";
		t[3][40] = "川島町"; t[3][41] = "吉見町"; t[3][42] = "鳩山町"; t[3][43] = "ときがわ町"; t[3][44] = "東秩父村";
		t[3][45] = "越谷市"; t[3][46] = "草加市"; t[3][47] = "春日部市"; t[3][48] = "三郷市"; t[3][49] = "八潮市";
		t[3][50] = "吉川市"; t[3][51] = "松伏町"; t[3][52] = "久喜市"; t[3][53] = "蓮田市"; t[3][54] = "幸手市";
		t[3][55] = "行田市"; t[3][56] = "加須市"; t[3][57] = "羽生市"; t[3][58] = "騎西町"; t[3][59] = "北川辺町";
		t[3][60] = "大利根町"; t[3][61] = "宮代町"; t[3][62] = "白岡町"; t[3][63] = "菖蒲町"; t[3][64] = "栗橋町";
		t[3][65] = "鷲宮町"; t[3][66] = "杉戸町"; t[3][67] = "熊谷市"; t[3][68] = "深谷市"; t[3][69] = "寄居町";
		t[3][70] = "本庄市"; t[3][71] = "美里町"; t[3][72] = "神川町"; t[3][73] = "上里町"; t[3][74] = "秩父市";
		t[3][75] = "横瀬町"; t[3][76] = "皆野町"; t[3][77] = "長瀞町"; t[3][78] = "小鹿野町";
		return t;
	}
}



//---------------------------------------------------------
//    地図セット
//---------------------------------------------------------
var threeSHallSearch = {

	map: "",
	geocoder: "",

	//-------------------------------------------------------
	//    GclientGeocoderをセット
	//-------------------------------------------------------
	start: function() {
		threeSHallSearchHTML.start();
		if (GBrowserIsCompatible()) {
			threeSHallSearch.map = new GMap2(document.getElementById("knowledge-hall-search-map"));
			threeSHallSearch.map.setCenter(new GLatLng(35.67431, 139.69082), 11);
			threeSHallSearch.map.addControl(new GLargeMapControl());
			threeSHallSearch.map.addOverlay(new GGeoXml("http://www.3s-ceremony.com/docs/map.kml"));
			threeSHallSearch.geocoder = new GClientGeocoder();
		}
	},


	//-------------------------------------------------------
	//    地図を移動
	//-------------------------------------------------------
	setMap: function(address) {
		if (threeSHallSearch.geocoder) {
			threeSHallSearch.geocoder.getLatLng(
				address,
				function(point) {
					if (point) {
						threeSHallSearch.map.setCenter(point, threeSHallSearch.map.getZoom());
						var marker = new GMarker(point);
						threeSHallSearch.map.addOverlay(marker);
						marker.openInfoWindowHtml(address + "付近の斎場");
					}
				}
			);
		}
	}

}
window.onload = threeSHallSearch.start;
document.onunload = GUnload;
