document.addEventListener("DOMContentLoaded", () => {
    var mymap = L.map("locationmap").setView([38.891, 139.824], 16);
    L.tileLayer('https://{s}.tile.osm.org/{z}/{x}/{y}.png', {
	attribution:
	'&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> \
		contributors'
    }).addTo(mymap);

    var locmarker = L.marker(mymap.getCenter()).addTo(mymap);
    locmarker.bindPopup("STARTおしてね").openPopup();

    var nTrial = 100
    var watchId = null;		// 最初はnullにしておく
    function stopLOC() {	// watchが動いていたら止めてnullにする
	console.log("watchId="+watchId);
	if (watchId != null) {	// nullかどうかで比較しないとだめ(初期値0)
	    navigator.geolocation.clearWatch(watchId);
	    document.getElementById("title").textContent = "stop";
	    locmarker.setPopupContent("停めました");
	}
	watchId = null;
    }
    function tryWatchLOC() {
	stopLOC();		// 二重で動かないように注意する
	watchId = navigator.geolocation.watchPosition(
	    onSuccess, onError,{
		maximumAge: 0, timeout: 3000, enableHighAccuracy: true});
	document.getElementById("title").textContent = "START!!";
    }
    function onSuccess(pos) {	// 衛星信号が取れたらここに来る
	var latlng = L.latLng([pos.coords.latitude, pos.coords.longitude]);
	mymap.panTo(latlng);// 地図の中心をそこにする
	console.log(latlng);

	var targetLat = 38.893609;
	var targetLng = 139.818897;

	// 現在の場所をポップアップに表示
	locmarker.setLatLng(latlng).setPopupContent(
	    "ここは lat=" + latlng.lat + ", lng=" + latlng.lng + " です."
	).openPopup();

	// 指定座標の前後 0.0005（約50m四方）に入ったら表示
	if (latlng.lat >= (targetLat - 0.0005) && latlng.lat <= (targetLat + 0.0005) && latlng.lng >= (targetLng - 0.0005) && latlng.lng <= (targetLng + 0.0005)) {

	    locmarker.setPopupContent("101教室です!!").openPopup();

	    // オプション：ゴールしたら監視を止める場合は下の行を有効にしてください
	    // stopLOC();
		}
    }
    function onError(err) {
	restN = "あと"+(--nTrial)+"回試行します。";
	locmarker.setPopupContent("捕捉失敗:"+restN).openPopup();
	if (nTrial <= 0) {
	    navigator.geolocation.clearWatch(watchId);
	}
    }
    // STARTボタンに開始を仕込む
    document.getElementById("start").addEventListener("click", tryWatchLOC);
    // STOPボタンに停止を仕込む
    document.getElementById("stop").addEventListener("click", stopLOC);


    //クリック版 cheatmode-tap
    // URLのクエリ部分を取得
    const query = window.location.search;
    // ?cheatmode-tap が含まれているか判定
    if (query === "?cheatmode-tap") {
	var start = null;		// 測定始点と終点
	var sMarker;			// 始点終点マーカ
	function startOrGoal(e) {
	    //var info = document.getElementById("info");
	    var imsg = "北緯 "+e.latlng.lat+" 東経 "+e.latlng.lng;
	    if (!start) {			// 始点未設定なら
		start = e.latlng;		// クリックされた緯度経度
		// 始点マーカを生成しマップに貼り付けポップアップ文字列を登録
		sMarker = L.marker(start).addTo(mymap).bindPopup(imsg);
		//info.innerHTML = imsg;		// 情報表示

	    
		var targetLat = 38.893609;
		var targetLng = 139.818897;

		// 現在の場所をポップアップに表示
		locmarker.setLatLng(start).setPopupContent(
		    "ここは lat=" + start.lat + ", lng=" + start.lng + " です."
		).openPopup();

		// 指定座標の前後 0.0005（約50m四方）に入ったら表示
		if (start.lat >= (targetLat - 0.0005) && start.lat <= (targetLat + 0.0005) && start.lng >= (targetLng - 0.0005) && start.lng <= (targetLng + 0.0005)) {

		    locmarker.setPopupContent("101教室です!!").openPopup();

		    // オプション：ゴールしたら監視を止める場合は下の行を有効にしてください
		    // stopLOC();
		}

	
	    } else {				// 始点が存在するとき
		sMarker.remove(mymap);		// 始点マーカの除去
		start = sMarker = null;
	    }
	}
    }

    
    
    mymap.on('click', startOrGoal);		// クリックイベントで startOrGoal()
}, false);
