var map = null;
var geocoder = null;
// アクセスしたときのズームレベル
var mapZoom = 16;
// アクセスしたときの場所
var defaultAddress = '佐世保';

function load() {

	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));

		/* コントロール追加 */
		map.addControl(new GLargeMapControl()); /* コントロール大 */

		// GClientGeocoderを初期化
		geocoder = new GClientGeocoder();
		showAddressFirst(defaultAddress);
	}
	GEvent.addListener(map, "moveend", function() {
		var centerlatlng = map.getCenter();
		var lng = centerlatlng.x; // x
		var lat = centerlatlng.y; // y
		writeLatLng(lat, lng);
	});

	//cross_px：十字の横幅・縦幅（ピクセル）
	//cross_td：十字の太さ（ピクセル）
	//cross_cr：十字の色（スタイルシートと同様の書式）
	var cross_px = 60;
	var cross_td = 2;
	var cross_cr = "red";
	
	//十字の縦線のエレメントを設定    
	var cross_h_emt =  document.createElement("div");
	//IE用にfontSizeを最小値
	cross_h_emt.style.fontSize = "1px";
	cross_h_emt.style.margin = "0px";
	cross_h_emt.style.padding = "0px";
	cross_h_emt.style.width = cross_px + "px";
	cross_h_emt.style.height = cross_td + "px";
	cross_h_emt.style.backgroundColor = cross_cr;
	
	//十字の横線のエレメントを設定
	var cross_v_emt =  document.createElement("div");
	cross_v_emt.style.margin = "0px";
	cross_v_emt.style.padding = "0px";
	cross_v_emt.style.width = cross_td+"px";
	cross_v_emt.style.height = cross_px + "px";
	cross_v_emt.style.backgroundColor = cross_cr;
	
	//十字（縦・横線）の位置を計算
	var MapPX = map.getSize();
	var mycenterHX = MapPX.width  / 2 - cross_px / 2;
	var mycenterHY = MapPX.height / 2 - cross_td / 2;
	var mycenterVX = MapPX.width  / 2 - cross_td / 2;
	var mycenterVY = MapPX.height / 2 - cross_px / 2;
	
	var mycenter_H = new GSize(mycenterHX,mycenterHY);
	var myposH = new GControlPosition(G_ANCHOR_TOP_LEFT, mycenter_H);
	myposH.apply(cross_h_emt);
	map.getContainer().appendChild(cross_h_emt); 
	
	var mycenter_V = new GSize(mycenterVX,mycenterVY);
	var myposV = new GControlPosition(G_ANCHOR_TOP_LEFT, mycenter_V);
	myposV.apply(cross_v_emt); 
	map.getContainer().appendChild(cross_v_emt);

}

// ページに初めてアクセスしたとき
function showAddressFirst(address) {
  if (geocoder) {
    geocoder.getLatLng(
      address,
      function(point) {
        if (!point) {
          alert(address + " not found");
        } else {
			map.setCenter(point, mapZoom);
			var marker = new GMarker(point);
			map.addOverlay(marker);
        }
      }
    );
  }
}
// 「地図を表示」ボタンを押されると実行されます
function showAddress(address) {
  if (geocoder) {
    geocoder.getLatLng(
      address,
      function(point) {
        if (!point) {
          alert(address + " not found");
        } else {
          mapZoom = map.getZoom();
          map.setCenter(point, mapZoom);
          var marker = new GMarker(point);
          map.addOverlay(marker);
//          marker.openInfoWindowHtml(address);
        }
      }
    );
  }
}
function writeLatLng(lat, lng) {
	var latDMS = D2DMS(lat);
	var lngDMS = D2DMS(lng);
	var latitudeHtml = "";
	var longitudeHtml = "";
	var latitudeHtml2 = "";
	var longitudeHtml2 = "";
	var mapLink = "";

	//フォームに追加
	latitudeHtml = myround(lat,6);
	longitudeHtml = myround(lng,6);
	
	document.getElementById("latitude").value = latitudeHtml;
	document.getElementById("longitude").value = longitudeHtml;

	latitudeHtml2 = latDMS[0] + "度" + latDMS[1] + "分" + latDMS[2] + "秒";
	longitudeHtml2 = lngDMS[0] + "度" + lngDMS[1] + "分" + lngDMS[2] + "秒";
	document.getElementById("latitude2").innerHTML = latitudeHtml2;
	document.getElementById("longitude2").innerHTML = longitudeHtml2;
	mapLink = "/index/" + latitudeHtml + "/" + longitudeHtml + "/" + map.getZoom() + "/";
	document.getElementById("getScript").href = mapLink;

}
function D2DMS(d) {
	var sign = (0 <= d) ? 1 : -1;
	var temp = Math.abs(d);
	var newD = Math.floor(temp);
	temp = (temp - newD) * 60;
	var newM = Math.floor(temp);
	temp = (temp - newM) * 60;
	var newS = myround(temp,3);
	return new Array(newD * sign, newM, newS);
}
function myround(val, n) {
	var s = Math.pow(10, n);
	val = val * s;
	val = Math.round(val);
	val = val / s;
	return val;
}

window.onload=load;
window.onunload=GUnload;

