// JavaScript Document
var map;
var sMap;
var eMap;
var sGeocoder;
var eGeocoder;
// デバック時に ture にする
var debagFlg = false;
// 出発地点(true)、到着地点(false)
var seFlag;


window.onload = function() {
	if ($("canvas")) {
		var ido = $("lat").value;
		var keido = $("lng").value;
		
		map = new GMap2($("canvas"));
		map.setCenter(new google.maps.LatLng(ido, keido), 13);
		// 地図ページ
		if ($("mapPageFlg")) {
			map.addControl(new GLargeMapControl());
			// basic.js にあるセレクトボックス作成ファンクション
			makeSelect();
			// マーカ表示ボタンファンクション登録
			$("getXml").onclick = getXml;
		// 乗り換え案内ページ
		} else if ($("exchangePageFlg")) {
			// 開始マップ
			sMap = new GMap2($("startPoint"));
			sMap.setCenter(new GLatLng(ido, keido), 13);
			sMap.addControl(new GSmallMapControl());
			GEvent.addListener(sMap, "click", getSAddress);
			sGeocoder = new GClientGeocoder();
			$("start").value = "";
			// 終了マップ
			eMap = new GMap2($("endPoint"));
			eMap.setCenter(new GLatLng(ido, keido), 13);
			eMap.addControl(new GSmallMapControl());
			GEvent.addListener(eMap, "click", getEAddress);
			eGeocoder = new GClientGeocoder();
			$("end").value = "";
			// basic.js にあるセレクトボックス作成ファンクション
			makeExchangeSelect();
		// 地図ページ以外
		} else {
			map.addOverlay(new GMarker(new GLatLng(ido,keido)));
			map.addControl(new GSmallMapControl());
		}
	}
	
	// 乗り換え案内の場合イベント追加
	if ($("exchangePageFlg")) {
		$("dispTransit").onclick = dispTransit;
		$("selectStartPoint").onchange = setStartAddress;
		$("selectEndPoint").onchange = setEndAddress;
	}
	// RMB レート取得
	dispRate();
	//　為替計算
	$("calc").onclick = calcMoney;

	// リンク画像変更(onMouseOver)
	$("teiban_link").onmouseover = changeTeibanLink;
	$("osusume_link").onmouseover = changeOsusumeLink;
	$("info_link").onmouseover = changeInfoLink;
	$("map_link").onmouseover = changeMapLink;
	$("traffic_link").onmouseover = changeTrafficLink;
	// リンク画像変更(onMouseOut)
	$("teiban_link").onmouseout = changeTeibanLink0;
	$("osusume_link").onmouseout = changeOsusumeLink0;
	$("info_link").onmouseout = changeInfoLink0;
	$("map_link").onmouseout = changeMapLink0;
	$("traffic_link").onmouseout = changeTrafficLink0;
}

// 乗り換え出発地点セレクトボックス選択時関数
function setStartAddress() {
	var selectedVal = $("selectStartPoint").value;
	latLng = selectedVal.split(",");
	latValue = latLng[0];
	lngValue = latLng[1];
	var latLng = new GLatLng(latValue, lngValue)
	var marker = new GMarker(latLng);
	sMap.setCenter(latLng, 13);
	sMap.addOverlay(marker);
	getSAddress(null, latLng);
}

// 乗り換え終了地点セレクトボックス選択時関数
function setEndAddress() {
	var selectedVal = $("selectEndPoint").value;
	latLng = selectedVal.split(",");
	latValue = latLng[0];
	lngValue = latLng[1];
	var latLng = new GLatLng(latValue, lngValue)
	var marker = new GMarker(latLng);
	eMap.setCenter(latLng, 13);
	eMap.addOverlay(marker);
	getEAddress(null, latLng);
}

// 出発地点取得
function getSAddress(overlay, latlng) {
	if (latlng != null) {
		sGeocoder.getLocations(latlng, showAddress);
		seFlag = true;
	}
}

// 到着地点取得
function getEAddress(overlay, latlng) {
	if(latlng != null) {
		eGeocoder.getLocations(latlng, showAddress);
		seFlag = false;
	}
}

function showAddress(response) {
	// マーカクリア
	if (seFlag) {
		sMap.clearOverlays();
	} else {
		eMap.clearOverlays();
	}
	// マーカ・住所追加
	if(!response || response.Status.code != 200) {
		alert("Status.code: "+ response.Status.code);	
	} else {
		place = response.Placemark[0];
		point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
		marker = new GMarker(point);
		if (seFlag) {
			sMap.addOverlay(marker);
			$("start").value = place.address;	
		} else {
			eMap.addOverlay(marker);
			$("end").value = place.address;	

		}	
	}
}

// Google トランジットを表示
function dispTransit() {
	start = $("start").value;
	end = $("end").value;
	if (!start || !end) {
		$("message").innerHTML = "「出発地点」と「終了地点」の住所が両方入っていることを確認してください";	
	} else {
		$("message").innerHTML = "";
		// url エンコード
		eStart = encodeURI(start);
		eEnd = encodeURI(end);
	
		url = "http://www.google.co.jp/maps?ie=UTF-8&f=d&saddr=";
		url = url + eStart;
		url = url + "&daddr=";
		url = url + eEnd;
		url = url + "&date=8/12";
		url = url + "&time=02:54";
		url = url + "&ttype=dep";
		url = url + "&dirflg=r";
		
		$("iframeCanvas").src = url;
	}
}

var selected = new Array();
var selectedValue = new Array();
var selectedCount = 0;
// 各地図プロット xml 情報取得
function getXml() {
	// 初期化
	map.clearOverlays();
	selected.length = 0;
	selectedValue.length = 0;
	selectedCount = 0;
	// 公共施設が選択されていた場合
	if ($("kokyoshisetsu").value) {
		selected.push("kokyoshisetsu");
		selectedValue.push($("kokyoshisetsu").value);
	}
	
	// 定番スポットが選択されていた場合
	if ($("standard").value) {
		selected.push("standard");
		selectedValue.push($("standard").value);
	}
	
	// お勧めスポットが選択されていた場合
	if ($("recommend").value) {
		selected.push("recommend");
		selectedValue.push($("recommend").value);

	}

	// デバック時に選択された値を表示する
	if (debagFlg) {
		if (0 < selected.length) {
			var selectedArg;
			for (i = 0; i < selected.length; i++) {
				selectedArg = "selected : "+selected[i]+"   selectedValue : "+selectedValue[i]+"\n";
			}
			alert("Value : \n"+selectedArg);
		}
	}
	// 選択されている場合のみ実行
	if (0 < selected.length) {
		rotateProtMarker();
	}
}

// マーカープロット関数呼び出し
function rotateProtMarker() {
	url = "";
	url = "http://" + location.hostname + "/xml/" + selected[selectedCount] + ".xml";
	// デバック時に作成した url を表示する
	if (debagFlg) {
		alert("url = "+url);
	}
	new Ajax.Request(url, {
		method:"get",
		onSuccess: protMarker,
		onException: function(){alert("Exception")}
	});		 
}

// 地図上にマーカーをプロットする
function protMarker(httpObj) {
	// デバック時に獲得した XML の内容を表示する
	if (debagFlg) {
		alert(httpObj.responseText);
	}
	var xmlData = httpObj.responseXML;
	// セレクトボックス名を取得
	rootName = xmlData.documentElement.nodeName;
	selectName = rootName.slice(0,-4);
	eachData = xmlData.getElementsByTagName(selectedValue[selectedCount])[0];
	// 各値の取り出し
	lat = eachData.getElementsByTagName("lat")[0].firstChild.nodeValue;
	lng = eachData.getElementsByTagName("lng")[0].firstChild.nodeValue;
	jname = eachData.getElementsByTagName("jname")[0].firstChild.nodeValue;
	address = "";
	if (eachData.getElementsByTagName("address")[0].firstChild) {
		address = eachData.getElementsByTagName("address")[0].firstChild.nodeValue;
	}
	tel = "";
	if (eachData.getElementsByTagName("tel")[0].firstChild) {
		tel = eachData.getElementsByTagName("tel")[0].firstChild.nodeValue;
	}
	descript = "";
	if (eachData.getElementsByTagName("description")[0].firstChild) {
		description = eachData.getElementsByTagName("description")[0].firstChild.nodeValue;
	}
	image = "";
	if (eachData.getElementsByTagName("image")[0].firstChild) {
		image = eachData.getElementsByTagName("image")[0].firstChild.nodeValue;
	}
	url = "";
	if (eachData.getElementsByTagName("url")[0].firstChild) {
		url = eachData.getElementsByTagName("url")[0].firstChild.nodeValue;
	}
	popText = name;
	// マーカー追加
	var latLng = new GLatLng(lat, lng);
	/*
	var marker = new GMarker(latLng);
	GEvent.addListener(marker, "mouseover", function() {
		marker.openInfoWindowHtml(popText);});
	*/
	marker = addInfoWindow(latLng, popText)
	map.addOverlay(marker);
	map.setCenter(latLng, 13);
	// さらに選択されていた場合、再度呼び出し
	selectedCount++;
	if (selected.length > selectedCount) {
		rotateProtMarker();
	}
}

function addInfoWindow(latLng, popText) {
	var marker1 = new GMarker(latLng);
//	GEvent.addListener(marker1, "mouseover", function() {
//		marker1.openInfoWindowHtml(popText);});
	return marker1;
}

