
/**
 * 使えるmap用JavaScriptです。
 *
 * @author 松下泰三
 * @version 1.0  2006/10/05
 */

var PATH_IMAGE = "/images/recruit/map/";		// イメージファイルパス

/**
 * JSON形式データです。
 *
 * 別ファイル保存してGDownloadUrlによる読み込みは
 * コストが掛かって初期表示が正常に行われないため
 * 本jsファイル内に記述します。
 */
var json={
	/**
	 * 初期表示位置情報です。
	 */
	"INIT": {
		"lat": 35.651850,
		"lng": 139.754890
	}
	/**
	 * エスジー本社の位置情報とアイコン情報です。
	 */
	,"SG": {
		"lat": 35.651850,
		"lng": 139.754890,
		"html": '<img src="' + PATH_IMAGE + 'sg_bar.jpg" width="221" height="58"/>',
		"image": "redballoon.png",
		"size": {"width":20, "height":34},
		"anchor": {"lat":30, "lng":10},
		"shadow": "shadow50.png",
		"shadowSize": {"width":37, "height":34},
		"infoAnchor": {"lat":28, "lng":12}
	}
	/**
	 * 2点間計測のSTARTアイコン情報です。
	 */
	,"FROM": {
		"image": "start_yellow.png",
		"size": {"width":30, "height":34},
		"anchor": {"lat":28, "lng":14},
		"shadow": "shadow50.png",
		"shadowSize": {"width":40, "height":30}
	}
	/**
	 * 2点間計測のENDアイコン情報です。
	 */
	,"TO": {
		"image": "finish_yellow.png",
		"size": {"width":30, "height":34},
		"anchor": {"lat":28, "lng":14},
		"shadow": "shadow50.png",
		"shadowSize": {"width":40, "height":30}
	}
	/**
	 * 地名検索の結果表示アイコン情報です。
	 */
	,"SEARCH": {
		"image": "pushpin_yellow.png",
		"size": {"width":20, "height":34},
		"anchor": {"lat":30, "lng":10},
		"shadow": "shadow50.png",
		"shadowSize": {"width":37, "height":34},
		"infoAnchor": {"lat":17, "lng":10}
	}
	/**
	 * 商工会館のアイコン情報です。
	 */
	,"KAIKAN": {
		"lat": 35.654744,
		"lng": 139.761238,
		"html": '<a href="http://www.minato-ala.net/guide/kaikan/kaikan01.html" target="_blank">港区立商工会館</a>です。',
		"image": "greenballoon.png",
		"size": {"width":20, "height":34},
		"anchor": {"lat":30, "lng":10},
		"shadow": "shadow50.png",
		"shadowSize": {"width":37, "height":34},
		"infoAnchor": {"lat":28, "lng":12}
	}
	/**
	 * 飲み屋情報のアイコン情報です。
	 * 追加する場合はbindの配列に要素を追加してください。
	 */
	,"PUB": {
		"size": {"width":20, "height":34},
		"anchor": {"lat":30, "lng":10},
		"shadow": "shadow50.png",
		"shadowSize": {"width":37, "height":34},
		"infoAnchor": {"lat":17, "lng":10},
		"bind": [
			{"lat":35.655605,"lng":139.754870,"image":"smile01.png","html":'<a href="http://www.yoronotaki.co.jp/top/top03.html" target="_blank"><img src="' + PATH_IMAGE + 'yoro.jpg" width="191" height="49" border="0" /></a><br><br>エス・ジーがこよなく愛するお店です。'}
			,{"lat":35.654483,"lng":139.754869,"image":"smile02.png","html":'<a href="http://www.watami.co.jp/zawatami/index.html" target="_blank"><img src="' + PATH_IMAGE + 'zawatami.jpg" width="150" height="195" border="0" /></a>'}
			,{"lat":35.653997,"lng":139.755639,"image":"smile03.png","html":'<a href="http://r.gnavi.co.jp/g240119/" target="_blank"><img src="' + PATH_IMAGE + 'chimuni.gif" width="125" height="100" border="0" /></a>'}
			,{"lat":35.654873,"lng":139.753967,"image":"smile04.png","html":'<a href="http://r.gnavi.co.jp/g498412/" target="_blank"><img src="' + PATH_IMAGE + 'umibun_nabebun.png" width="120" height="64" border="0" /></a>'}
			,{"lat":35.656313,"lng":139.755102,"image":"smile05.png","html":'<a href="http://www.ramla.net/casual_restaurant/nihonbashitei/restaurant/detail.cgi?store=00037" target="_blank"><img src="' + PATH_IMAGE + 'nihonbasitei.jpg" width="149" height="148" border="0" /></a>'}
			,{"lat":35.656504,"lng":139.754949,"image":"smile06.png","html":'<a href="http://www.pub-82.com/shop/hamamatsucyo/" target="_blank"><img src="' + PATH_IMAGE + '82.png" width="74" height="61" border="0" /></a>'}
		]
	}
	/**
	 * 天気表示用の位置情報です。
	 * id は livedoor Weather Hacks の都市番号です。
	 */
	,"WEATHER": {
		"lat": 37.7,
		"lng": 135.8,
		"bind": [
			{"name":"札幌","id":4,"lat":43.064615,"lng":141.346807}
			,{"name":"青森","id":17,"lat":40.824308,"lng":140.739998}
			//,{"name":"秋田","id":20,"lat":39.718614,"lng":140.102364}
			//,{"name":"盛岡","id":22,"lat":39.703619,"lng":141.152684}
			,{"name":"仙台","id":25,"lat":38.268837,"lng":140.8721}
			//,{"name":"山形","id":27,"lat":38.240436,"lng":140.363633}
			//,{"name":"福島","id":31,"lat":37.750299,"lng":140.467551}
			//,{"name":"水戸","id":54,"lat":36.341811,"lng":140.446793}
			//,{"name":"宇都宮","id":56,"lat":36.562845,"lng":139.883432}
			//,{"name":"前橋","id":58,"lat":36.390668,"lng":139.060406}
			//,{"name":"さいたま","id":60,"lat":35.856999,"lng":139.648849}
			,{"name":"東京","id":63,"lat":35.654245,"lng":139.75463}
			//,{"name":"千葉","id":67,"lat":35.605057,"lng":140.123306}
			//,{"name":"横浜","id":70,"lat":35.447507,"lng":139.642345}
			//,{"name":"甲府","id":75,"lat":35.664158,"lng":138.568449}
			//,{"name":"富山","id":44,"lat":36.695291,"lng":137.211338}
			,{"name":"金沢","id":46,"lat":36.594682,"lng":136.625573}
			//,{"name":"福井","id":48,"lat":36.065178,"lng":136.221527}
			,{"name":"新潟","id":50,"lat":37.902552,"lng":139.023095}
			//,{"name":"長野","id":72,"lat":36.651299,"lng":138.180956}
			//,{"name":"静岡","id":34,"lat":34.97712,"lng":138.383084}
			,{"name":"名古屋","id":38,"lat":35.180188,"lng":136.906565}
			//,{"name":"岐阜","id":40,"lat":35.391227,"lng":136.722291}
			//,{"name":"津","id":42,"lat":34.730283,"lng":136.508588}
			//,{"name":"大津","id":77,"lat":35.004531,"lng":135.86859}
			//,{"name":"京都","id":79,"lat":35.021247,"lng":135.755597}
			,{"name":"大阪","id":81,"lat":34.686297,"lng":135.519661}
			//,{"name":"神戸","id":82,"lat":34.691269,"lng":135.183071}
			//,{"name":"奈良","id":84,"lat":34.685334,"lng":135.832742}
			//,{"name":"和歌山","id":86,"lat":34.226512,"lng":135.16732}
			//,{"name":"岡山","id":88,"lat":34.661751,"lng":133.934406}
			,{"name":"広島","id":90,"lat":34.39656,"lng":132.459623}
			//,{"name":"松江","id":92,"lat":35.472295,"lng":133.0505}
			,{"name":"鳥取","id":95,"lat":35.503891,"lng":134.237736}
			//,{"name":"山口","id":98,"lat":34.185956,"lng":131.470649}
			//,{"name":"徳島","id":101,"lat":34.065718,"lng":134.55936}
			//,{"name":"高松","id":103,"lat":34.340149,"lng":134.043444}
			//,{"name":"松山","id":104,"lat":33.841624,"lng":132.765681}
			,{"name":"高知","id":107,"lat":33.559706,"lng":133.531079}
			,{"name":"福岡","id":110,"lat":33.606576,"lng":130.418297}
			//,{"name":"大分","id":114,"lat":33.238172,"lng":131.612619}
			//,{"name":"長崎","id":118,"lat":32.744839,"lng":129.873756}
			//,{"name":"佐賀","id":122,"lat":33.249442,"lng":130.299794}
			//,{"name":"熊本","id":124,"lat":32.789827,"lng":130.741667}
			//,{"name":"宮崎","id":128,"lat":31.911096,"lng":131.423893}
			,{"name":"鹿児島","id":132,"lat":31.560169,"lng":130.557983}
			,{"name":"那覇","id":136,"lat":26.212401,"lng":127.680932}
		]
	}
};

/**
 * GLOBALオブジェクトです。
 *
 */
var map = null;				// GMap2オブジェクト
var oray = null;			// GOverviewMapControlオブジェクト
var initpos;				// 初期表示位置オブジェクト
var sgpos;					// SGの位置情報オブジェクト
var markerFrom = null;		// 2点計測開始位置マーカー
var markerTo = null;		// 2点計測終了位置マーカー
var poly = null;			// 2点計測線オブジェクト
var searcher = null;		// GlocalSearchオブジェクト
var searchMarker = null;	// 検索結果マーカー
var searchIcon;				// 検索結果アイコン
var markerPub = [];			// 居酒屋情報マーカー配列
var markerWeather = [];		// 天気情報マーカー配列
var markerKaikan = null;

/**
 * GMarker createMarker(JSON)
 *
 * マーカーを作成します。
 *
 * @param j JSONオブジェクト
 * @return マーカーオブジェクト
 */
function createMarker(j) {
	var point = createLatLng(j);
	var icon = createIcon(j);
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(j.html, {"maxWidth":200});
	});
	return marker;
}

/**
 * GIcon createIcon(JSON)
 *
 * アイコンを作成します。
 *
 * @param j JSONオブジェクト
 * @return アイコンオブジェクト
 */
function createIcon(j) {
	var icon = new GIcon();
	icon.iconSize = new GSize(j.size.width, j.size.height);
	icon.iconAnchor = new GLatLng(j.anchor.lat, j.anchor.lng);
	icon.shadow = PATH_IMAGE + j.shadow;
	icon.shadowSize = new GSize(j.shadowSize.width, j.shadowSize.height);
	if (j.image) icon.image = PATH_IMAGE + j.image;
	if (j.infoAnchor) icon.infoWindowAnchor = new GLatLng(j.infoAnchor.lat, j.infoAnchor.lng);
	return icon;
}

/**
 * GLatLng createLatLng(JSON)
 *
 * 位置情報オブジェクトを作成します。
 *
 * @param j JSONオブジェクト
 * @return 位置情報オブジェクト
 */
function createLatLng(j) {
	return new GLatLng(j.lat, j.lng);
}

/**
 * String reduceScale(float)
 *
 * 長さ10000以下はm表記で10000以上はkm表記にします。
 *
 * @param length 長さ
 * @return 変換後の文字列
 */
function reduceScale(length) {
	var len;
	if (parseInt(length) > 10000) {
		len = (parseInt(length)/1000).toFixed(1) + "km";
	} else {
		len = length.toFixed(0) + "m";
	}
	return len;
}

/**
 * void measure()
 *
 * 2点間のラインと距離を表示します。
 *
 */
function measure() {
	var dist = markerFrom.getPoint().distanceFrom(markerTo.getPoint());
	document.getElementById("distanceDouble").innerHTML = reduceScale(dist);
	if (poly) {
		map.removeOverlay(poly);
	}
	var points = [markerFrom.getPoint(), markerTo.getPoint()];
	map.addOverlay(poly = new GPolyline(points, 'red', 4, 0.7));
}

/**
 * void showDoublePoints()
 *
 * 2点間距離アイコンを表示します。
 *
 */
function showDouble() {
	removeDouble();
	var i1 = createIcon(json.FROM);
	var i2 = createIcon(json.TO);
	var p1 = new GLatLng(parseFloat(map.getCenter().lat()) - 0.001, parseFloat(map.getCenter().lng()) - 0.001);
	var p2 = new GLatLng(parseFloat(map.getCenter().lat()) + 0.001, parseFloat(map.getCenter().lng()) + 0.001);
	markerFrom = new GMarker(p1,{"icon":i1, "draggable":true});
	markerTo   = new GMarker(p2,{"icon":i2, "draggable":true});
	GEvent.addListener(markerFrom, "drag", function() { measure() });
	GEvent.addListener(markerTo  , "drag", function() { measure() });
	map.addOverlay(markerFrom);
	map.addOverlay(markerTo);
	measure();
}

/**
 * void removeDouble()
 *
 * 2点間距離アイコンを消去します。
 *
 */
function removeDouble() {
	if (poly) {
		map.removeOverlay(poly);
		map.removeOverlay(markerFrom);
		map.removeOverlay(markerTo);
		poly = null;
		markerFrom = null;
		markerTo = null;
		document.getElementById("distanceDouble").innerHTML = "";
	}
}

/**
 * void showPub()
 *
 * 飲み屋アイコンを表示します。
 *
 */
function showPub() {
	if (markerPub.length == 0) {
		for (var i = 0; i < json.PUB.bind.length; i++) {
			var icon = createIcon(json.PUB);
			var point = createLatLng(json.PUB.bind[i]);
			icon.image = PATH_IMAGE + json.PUB.bind[i].image;
			markerPub[i] = new GMarker(point, icon);
			markerPub[i].html = json.PUB.bind[i].html;
			GEvent.addListener(markerPub[i], "click", function() {
				this.openInfoWindowHtml(this.html);
			});
			map.addOverlay(markerPub[i]);
		}
	}
	map.setCenter(initpos, 16);
	var position = 0;
	var markerIdo = [];
	var positions = {
		"size": {"width":12, "height":20},
		"anchor": {"lat":17, "lng":10},
		"shadow": "shadow50.png",
		"shadowSize": {"width":21, "height":19},
		"bind": [
		
			{"lat":35.651755,"lng":139.7548,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.651786,"lng":139.75441,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.652083,"lng":139.75416,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.652763,"lng":139.75422,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.653408,"lng":139.75431,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.653948,"lng":139.75440,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.654488,"lng":139.75447,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.655015,"lng":139.75454,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.655540,"lng":139.754870,"image":"mm_20_yellow.png","html":''}
		]
	};
	move(sgpos);
	map.openInfoWindowHtml(sgpos, json.SG.html);
	setTimeout(next, 1000);
	function next() {
		if (position == 0) {map.closeInfoWindow();}
		if (position == positions.bind.length) {
			map.openInfoWindowHtml(createLatLng(json.PUB.bind[0]), json.PUB.bind[0].html);
			setTimeout(last, 1000);
		} else {
			var icon = createIcon(positions);
			var point = createLatLng(positions.bind[position]);
			icon.image = PATH_IMAGE + positions.bind[position].image;
			markerIdo[position] = new GMarker(point, icon);
			map.addOverlay(markerIdo[position]);
			map.panTo(point);
			move(point);
			position = position + 1;
			setTimeout(next, 600);
		}
	}
	function last() {
		if (markerPub.length != 0) {
			for (var i = 0; i < markerIdo.length; i++) {
				map.removeOverlay(markerIdo[i]);
			}
			markerIdo = [];
		}
	}
}

/**
 * void removePub()
 *
 * 飲み屋アイコンを非表示にします。
 *
 */
function removePub() {
	if (markerPub.length != 0) {
		for (var i = 0; i < markerPub.length; i++) {
			map.removeOverlay(markerPub[i]);
		}
		markerPub = [];
	}
}

/**
 * void showKaikan()
 *
 * 商工会館アイコンを表示します。
 *
 */
function showKaikan() {
	if (markerKaikan == null) {
		markerKaikan = createMarker(json.KAIKAN);
		map.addOverlay(markerKaikan);
	}
	map.openInfoWindowHtml(createLatLng(json.KAIKAN), json.KAIKAN.html);
	map.setCenter(createLatLng(json.KAIKAN), 16);
}

/**
 * void removeKaikan()
 *
 * 商工会館アイコンを非表示にします。
 *
 */
function removeKaikan() {
	if (markerKaikan != null) {
		map.removeOverlay(markerKaikan);
		markerKaikan = null;
	}
}

/**
 * void progressWeather()
 *
 * 天気表示のプログレスバーです。
 *
 */
var intervalID;
function progressWeather() {
	document.getElementById("progress").innerHTML += "<img src='" + PATH_IMAGE + "progress.gif' width='15' height='13'>";
}

/**
 * void showWeather()
 *
 * 天気を表示します。
 *
 */
function showWeather() {

	if (markerWeather.length == 0) {
		var id = "";
		for (var i = 0; i < json.WEATHER.bind.length; i++) {
			if (i != 0) {
				id += ",";
			}
			id += json.WEATHER.bind[i].id;
		}
		intervalID = setInterval("progressWeather()", 200);
		var request = GXmlHttp.create();
		request.open('GET', '/cgi-bin/map/weather.cgi?' + id, true);
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				var xmlText = request.responseText;
				var splits = xmlText.split("\n");
				var concats = "";
				var docs = new Array();
				for (var i = 0; i < splits.length; i++) {
					if (splits[i].match("<?xml")) {
						if (i != 0) {
							docs.push(concats);
						}
						concats = "";
					}
					concats += splits[i];
				}
				docs.push(concats);
				var xmlDoc, eImage, eUrl, eWidth, eHeight, eDescription, eTitle, point, icon;
				for (var i = 0; i < docs.length; i++) {
					xmlDoc = GXml.parse(docs[i]);
					eImage = xmlDoc.getElementsByTagName("image");
					eUrl = eImage[0].getElementsByTagName("url")[0].firstChild.nodeValue;
					eWidth = eImage[0].getElementsByTagName("width")[0].firstChild.nodeValue;
					eHeight = eImage[0].getElementsByTagName("height")[0].firstChild.nodeValue;
					eDescription = xmlDoc.getElementsByTagName("description")[0].firstChild.nodeValue;
					eTitle = xmlDoc.getElementsByTagName("telop")[0].firstChild.nodeValue;
					point = createLatLng(json.WEATHER.bind[i]);
					icon = new GIcon();
					icon.iconSize = new GSize(parseFloat(eWidth) * 0.8 , parseFloat(eHeight) * 0.8);
					icon.image = eUrl;
					icon.iconAnchor = new GLatLng(20, 20);
					icon.shadow = "";
					icon.shadowSize = "";
					icon.infoWindowAnchor = new GLatLng(17, 10);
					markerWeather[i] = new GMarker(point, icon);
					markerWeather[i].html = '<font size="-2"><b>' + json.WEATHER.bind[i].name + '</b>　' + eTitle + '<br><br>' + eDescription + '</font>';
					GEvent.addListener(markerWeather[i], "click", function() {
						this.openInfoWindowHtml(this.html, {"maxWidth":200});
					});
					map.addOverlay(markerWeather[i]);
				}
				clearInterval(intervalID);
				document.getElementById("progress").innerHTML = "";
  			}
		}
		request.send(null);
	}
	map.setCenter(createLatLng(json.WEATHER), 5);

}

/**
 * void removeWeather()
 *
 * 天気を非表示にします。
 *
 */
function removeWeather() {
	if (markerWeather.length != 0) {
		for (var i = 0; i < markerWeather.length; i++) {
			map.removeOverlay(markerWeather[i]);
		}
		markerWeather = [];
	}
}

/**
 * void searchLocal()
 *
 * 地名検索です。
 *
 */
function searchLocal() {
	if (searcher == null) {
		searchIcon = createIcon(json.SEARCH);
		searcher = new GlocalSearch();
		searcher.setSearchCompleteCallback(null, onSearch);
	}
	var val = document.getElementById("local").value;
	if (val) {
		searcher.setCenterPoint(map);
		searcher.execute(val);
	}
}

/**
 * void onSearch()
 *
 * 地名検索のコールバック関数です。
 *
 */
function onSearch() {
	if (!searcher.results) return;
	if (searcher.results.length > 0) {
		if (searchMarker) {
			map.getInfoWindow().hide();
			map.removeOverlay(searchMarker);
		}
		var p = createLatLng(searcher.results[0]);
		map.setCenter(p, 16);
		searchMarker = new GMarker(p, searchIcon);
		GEvent.addListener(searchMarker, "click", function() {
			searchMarker.openInfoWindowHtml(searcher.results[0].city, {"maxWidth":200});
		});
		map.addOverlay(searchMarker);
	} else {
		document.getElementById("local").value = "見つからなかったですけど";
	}
}

/**
 * void showPosition(GLatLng)
 *
 * 座標の緯度経度を表示します。
 *
 * @param latlng 位置情報オブジェクト
 */
function showPosition(latlng) {
	var lat = String(latlng.lat().toFixed(3));
	var lng = String(latlng.lng().toFixed(3));
	if (latlng.lat() < 0) {
		document.getElementById("lat").innerHTML = "南緯" + lat.replace("-", "");
	} else {
		document.getElementById("lat").innerHTML = "北緯" + lat;
	}
	if (latlng.lng() < 0) {
		document.getElementById("lng").innerHTML = "西経" + lng.replace("-", "");
	} else {
		document.getElementById("lng").innerHTML = "東経" + lng;
	}
}

/**
 * void showDistance(GLatLng)
 *
 * 座標からSGの座標までの距離を表示します。
 *
 * @param latlng 位置情報オブジェクト
 */
function showDistance(latlng) {
	document.getElementById("distance").innerHTML = reduceScale(latlng.distanceFrom(sgpos));
}

/**
 * void move(GLatLng)
 *
 * 移動イベントの処理です。
 *
 * @param latlng 位置情報オブジェクト
 */
function move(latlng) {
	showPosition(latlng);
	showDistance(latlng);
}

/**
 * void showHikkosi()
 *
 * 引越し
 *
 */
function showHikkosi() {
	var position = 0;
	var markerHikkosi = [];
	var positions = {
		"size": {"width":12, "height":20},
		"anchor": {"lat":17, "lng":10},
		"shadow": "shadow50.png",
		"shadowSize": {"width":21, "height":19},
		"bind": [
			{"lat":35.653948,"lng":139.75440,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.653408,"lng":139.75431,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.652763,"lng":139.75422,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.652083,"lng":139.75416,"image":"mm_20_yellow.png","html":''}
			,{"lat":35.651786,"lng":139.75441,"image":"mm_20_yellow.png","html":''}
		]
	};
	//startUp();
	map.removeControl(oray);
	map.setCenter(sgpos, 16);
	move(sgpos);
	sgpos = createLatLng(json.SG);
	map.openInfoWindowHtml(sgpos, json.SG.html);
	setTimeout(next, 1000);
	function next() {
		if (position == 0) {map.closeInfoWindow();}
		if (position == positions.bind.length) {
			newpos = createLatLng(json.NEWSG);
			map.panTo(newpos);
			map.addOverlay(createMarker(json.NEWSG));
			map.openInfoWindowHtml(newpos, json.NEWSG.html);
			move(newpos);
			if (markerHikkosi.length != 0) {
				for (var i = 0; i < markerHikkosi.length; i++) {
					map.removeOverlay(markerHikkosi[i]);
				}
				markerHikkosi = [];
			}
			setTimeout(last, 1000);
		} else {
			var icon = createIcon(positions);
			var point = createLatLng(positions.bind[position]);
			icon.image = PATH_IMAGE + positions.bind[position].image;
			markerHikkosi[position] = new GMarker(point, icon);
			map.addOverlay(markerHikkosi[position]);
			map.panTo(point);
			move(point);
			position = position + 1;
			setTimeout(next, 600);
		}
	}
	function last() {
		map.addControl(oray);
	}
}

/**
 * void launcher()
 *
 * 画面からの実行処理です。
 *
 */
function launcher(menu) {
	if (GBrowserIsCompatible()) {
		map.getInfoWindow().hide();
		switch (menu) {
			case "search":
				searchLocal();
				break;
			case "double":
				showDouble();
				break;
			case "rmdouble":
				removeDouble();
				break;
			case "pub":
				showPub();
				break;
			case "rmpub":
				removePub();
				break;
			case "kaikan":
				showKaikan();
				break;
			case "rmkaikan":
				removeKaikan();
				break;
			case "weather":
				removeDouble();
				removePub();
				removeKaikan();
				showWeather();
				break;
			case "rmweather":
				removeWeather();
				clearInterval(intervalID);
				document.getElementById("progress").innerHTML = "";
				startUp();
				break;
			case "hikkosi":
				showHikkosi();
				break;
			default:
				break;
		}
	}
	return false;
}

/**
 * void startUp()
 *
 * 開始処理です。
 * ページのロード時に呼ばれます。
 * オブジェクト生成やコントロール配置などを行います。
 *
 */
function startUp() {

	map = new GMap2(document.getElementById("sgmap"));
	map.addControl(new GLargeMapControl());				// ズームコントロール付き。
	map.addControl(new GMapTypeControl());				// 地図タイプ切り替えボタン。
	map.addControl(new GScaleControl());				// 縮尺表示画像。
	oray = new GOverviewMapControl();
	map.addControl(oray);								// 周辺地図画像。※重たい場合はコメントアウトしてください
	
	initpos = createLatLng(json.INIT);					// 初期表示位置オブジェクト生成
	sgpos = createLatLng(json.SG);						// SG位置オブジェクト生成。
	map.setCenter(initpos, 16);							// ズームレベル16
	
	map.addOverlay(createMarker(json.SG));				// SGのマーカを作ります
	map.openInfoWindowHtml(sgpos, json.SG.html);
	GEvent.addListener(map, "mousemove", move);			// 地図移動イベント設置
	move(initpos);										// 現在地表示

}

if (GBrowserIsCompatible()) {
	onUnload = GUnload();
}

/**
* エラートラップ関数 ステータスバー版
**/
function error_status(message_,location_,line_){{
  status = 'An error has occured; error:'+
     message_+',location:'+location_+',line:'+line_;
  return true;
}}
onerror = error_status;

