<!--
var defaultLocation = new google.maps.LatLng(35.678914, 139.767007);
var currentLocation;
var browserSupportFlag =  new Boolean();
var map;
var areas;
var studios;
var markers;
var myOptions = {
	zoom: 14,
	mapTypeId: google.maps.MapTypeId.ROADMAP
};

window.onload = function(){

	var eventType = 1;
	markers = new google.maps.MVCArray();
	
	map = new google.maps.Map(document.getElementById("googlemaps"), myOptions);
	map.setCenter(defaultLocation);
	
	google.maps.event.addListener(map, 'zoom_changed', function(){
		eventType = 2;
	});
	
	google.maps.event.addListener(map, 'dragend', function(){
		eventType = 3;
	});
	
	google.maps.event.addListener(map, 'bounds_changed', function(){
		// 初回ロード時のみアイコン読み込みとする
		if (1 == eventType)
		{
			getAreaData();
		}
		
		eventType = 0;
	});
}

// 全マーカー削除
function removeMarker() {
	for (var i = markers.getLength() - 1; 0 <= i; i--)
	{
		markers.getAt(i).setMap(null);
		markers.removeAt(i);
	}
	
};

// エリア情報の取得
function getAreaData()
{
	// エリア一覧を取得
	$.getJSON("/get_arealist.php", null, function(json){
		
		// 取得したエリア情報を保持
		areas = json;
		getStudioData();
	});
}

// 全店舗情報の取得
function getStudioDataAll()
{
	// 全店舗一覧を取得
	$.getJSON("./get_studiolist.php", null, function(json){
		
		// 取得した店舗情報を保持
		studios = json;
		
	});
}

// 店舗情報の取得＋マーカーのセット
function getStudioData()
{
	// 表示している範囲(緯経度)
	var ret = {
		north : map.getBounds().getNorthEast().lat(),
		east : map.getBounds().getNorthEast().lng(),
		south : map.getBounds().getSouthWest().lat(),
		west : map.getBounds().getSouthWest().lng()
	};
	
	// 表示している範囲を渡して、範囲内の店舗一覧を取得
	$.getJSON("./get_studiolist.php", null, function(json){
		
		// 取得した店舗情報を保持
		studios = json;
		
		// マーカー全削除
		removeMarker();
		for (var i = 0; i < studios.length; i++)
		{
			// マーカーを表示
			var marker = new google.maps.Marker({
				position: new google.maps.LatLng(studios[i].lat, studios[i].lng),
				map: map,
				icon: new google.maps.MarkerImage(studios[i].icon),
				title: studios[i].studio_name,
				zIndex: i,
				visible: true
			});
			// マーカーへのイベント設定（クリックされたら）
			google.maps.event.addListener(marker, 'click', function(){
				var ret = "";
				ret += "<h3 id='ichiran'>店舗一覧</h3>";
				ret += "<ul>";
				var studio = studios[this.zIndex];
				ret += "<li><a href='" + studio.studio_web_url + "' class='name'>" + studio.studio_name + "</a><span class='phone'>" + studio.tel_no + "</span><a class='detail' href='" + studio.studio_web_url + "'>詳細</a><a class='reserve' href='" + studio.studio_reserve_url + "'>予約</a></li>";
				ret += "</ul>";
				$("#result")[0].innerHTML = ret;
			});
			// マーカー一覧に追加
			markers.push(marker);
		}
		
		// 東京都のエリアを表示
		dispAreaByPref(1);
	});
}

// マーカーのセット(全店)
function setMarkers(){
	// マーカー全削除
	removeMarker();
	for (var i = 0; i < studios.length; i++)
	{
		// マーカーを表示
		var marker = new google.maps.Marker({
			position: new google.maps.LatLng(studios[i].lat, studios[i].lng),
			map: map,
			icon: new google.maps.MarkerImage(studios[i].icon),
			title: studios[i].studio_name,
			zIndex: i,
			visible: true
		});
		// マーカーへのイベント設定（クリックされたら）
		google.maps.event.addListener(marker, 'click', function(){
			var ret = "";
			ret += "<h3 id='ichiran'>店舗一覧</h3>";
			ret += "<ul>";
			var studio = studios[this.zIndex];
			ret += "<li><a href='" + studio.studio_web_url + "' class='name'>" + studio.studio_name + "</a><span class='phone'>" + studio.tel_no + "</span><a class='detail' href='" + studio.studio_web_url + "'>詳細</a><a class='reserve' href='" + studio.studio_reserve_url + "'>予約</a></li>";
			ret += "</ul>";
			$("#result")[0].innerHTML = ret;
		});
		// マーカー一覧に追加
		markers.push(marker);
	}
}

// 都道府県エリア表示
function dispAreaByPref(pref_id)
{
	if (null == areas)
	{
		return;
	}
	
	var findArea = new Array();
	
	for (var i = 0; i < areas.length; i++)
	{

		if (pref_id == areas[i].pref_id)
		{
			findArea.push(areas[i]);
		}
	}
	
	if (0 < findArea.length)
	{
		var ret = "";
		for (var s in findArea)
		{
			ret += "<a href='javascript:searchArea("+ findArea[s].area_id + ")'>" + findArea[s].area_name + "</a>";
		}
		$("#place")[0].innerHTML = ret;
	}
}

// 都道府県検索
function searchPref(pref_id)
{
	//map.setOptions(myOptions);
	//map.setCenter(defaultLocation);

	if (null == areas)
	{
		return;
	}
	
	// マーカーを表示
	//setMarkers();
	
	var findArea = new Array();
	
	for (var i = 0; i < areas.length; i++)
	{

		if (pref_id == areas[i].pref_id)
		{
			findArea.push(areas[i]);
		}
	}
	
	if (0 < findArea.length)
	{
		var ret = "";
		for (var s in findArea)
		{
			ret += "<a href='javascript:searchArea("+ findArea[s].area_id + ")'>" + findArea[s].area_name + "</a>";
		}
		$("#place")[0].innerHTML = ret;
	}
}

// エリア検索
function searchArea(area_id)
{
	
	if (null == studios)
	{
		return;
	}
	
	// マーカー全削除
	removeMarker();
	
	var minLng = 360;
	var maxLng = 0;
	var minLat = 180;
	var maxLat = 0;
	
	var findStudio = new Array();
	
	for (var i = 0; i < studios.length; i++)
	{

		if (area_id == studios[i].area_id)
		{
			findStudio.push(studios[i]);
			if (studios[i].lng < minLng)
			{
				minLng = studios[i].lng;
			}
			
			if (maxLng < studios[i].lng)
			{
				maxLng = studios[i].lng;
			}
			
			if (studios[i].lat < minLat)
			{
				minLat = studios[i].lat;
			}
			
			if (maxLat < studios[i].lat)
			{
				maxLat = studios[i].lat;
			}
			// マーカーを表示
			var marker = new google.maps.Marker({
				position: new google.maps.LatLng(studios[i].lat, studios[i].lng),
				map: map,
				icon: new google.maps.MarkerImage(studios[i].icon),
				title: studios[i].studio_name,
				zIndex: i,
				visible: true
			});
			// マーカーへのイベント設定（クリックされたら）
			google.maps.event.addListener(marker, 'click', function(){
				var ret = "";
				ret += "<h3 id='ichiran'>店舗一覧</h3>";
				ret += "<ul>";
				var studio = studios[this.zIndex];
				ret += "<li><a href='" + studio.studio_web_url + "' class='name'>" + studio.studio_name + "</a><span class='phone'>" + studio.tel_no + "</span><a class='detail' href='" + studio.studio_web_url + "'>詳細</a><a class='reserve' href='" + studio.studio_reserve_url + "'>予約</a></li>";
				ret += "</ul>";
				$("#result")[0].innerHTML = ret;
			});
			// マーカー一覧に追加
			markers.push(marker);
		}
	}
	
	if (0 < findStudio.length)
	{
		var ret = "";
		ret += "<h3 id='ichiran'>店舗一覧</h3>";
		ret += "<ul>";
		for (var s in findStudio)
		{
			ret += "<li><a href='" + findStudio[s].studio_web_url + "' class='name'>" + findStudio[s].studio_name + "</a><span class='phone'>" + findStudio[s].tel_no + "</span><a class='detail' href='" + findStudio[s].studio_web_url + "'>詳細</a><a class='reserve' href='" + findStudio[s].studio_reserve_url + "'>予約</a></li>";
		}
		ret += "</ul>";
		$("#result")[0].innerHTML = ret;

		if (findStudio.length == 1){
			map.setOptions(myOptions);
			map.setCenter(new google.maps.LatLng(minLat, minLng));
		} else {
			var latLngBounds = new google.maps.LatLngBounds(
				new google.maps.LatLng(minLat, minLng),
				new google.maps.LatLng(maxLat, maxLng)
			);
			map.fitBounds(latLngBounds);
		}
	} else {
		var ret = "";
		$("#result")[0].innerHTML = ret;
	}
	
	
	
}

// 現在地へ移動
function searchCurrent(){

	removeMarker();
	// Try W3C Geolocation (Preferred)
	if(navigator.geolocation) {
		browserSupportFlag = true;
		navigator.geolocation.getCurrentPosition(function(position) {
			currentLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
			toCurrentLocationIncShop(currentLocation);
			
			}, function() {
				handleNoGeolocation(browserSupportFlag);
		});
	// Try Google Gears Geolocation
	} else if (google.gears) {
		browserSupportFlag = true;
		var geo = google.gears.factory.create('beta.geolocation');
		geo.getCurrentPosition(function(position) {
			currentLocation = new google.maps.LatLng(position.latitude,position.longitude);
			//map.panTo(currentLocation);
			toCurrentLocationIncShop(currentLocation);
			
			var marker = new google.maps.Marker({
				position: currentLocation,
				map: map
			});
			
			}, function() {
				handleNoGeoLocation(browserSupportFlag);
		});
	// Browser doesn't support Geolocation
	} else {
		browserSupportFlag = false;
		handleNoGeolocation(browserSupportFlag);
	}
}
	
function handleNoGeolocation(errorFlag) {
	if (errorFlag == true) {
		alert("Geolocation service failed.");
	} else {
		alert("Your browser doesn't support geolocation.");
	}
	initialLocation = defaultLocation;
	map.panTo(initialLocation);
}

function toCurrentLocationIncShop(latLng)
{
	if (null == studios)
	{
		return;
	}
	
	var dx = 0.009064;
	var dy = 0.0084;
	
	var cx = latLng.lng();
	var cy = latLng.lat();
	
	var result = new Array();
	for (var k in studios)
	{
		var y_dist = 1000 * (studios[k].lat - cy) / dy;
		var x_dist = 1000 * (studios[k].lng - cx) / dx;
		var r_dist = 1000 * Math.sqrt(((studios[k].lat - cy) / dy) * ((studios[k].lat - cy) / dy) + (((studios[k].lng - cx) / dx) * ((studios[k].lng - cx) / dx)));
		var order = ((studios[k].lat  - cy) / dy) * ((studios[k].lat - cy) / dy) + ((studios[k].lng - cx) / dx * (studios[k].lng - cx) / dx);
		result.push({"order": order, "y_dist": y_dist, "x_dist": x_dist, "r_dist": r_dist, "item": studios[k]});
	}
	
	result.sort(function(a, b) {
		if (a.order == b.order)
		{
			return 0;
		}
		return (a.order < b.order) ? -1 : 1;
	});
	
/*
	// 一番近い１件を取り出す
	var nStudio = result[0].item;
	
	var dLat = (latLng.lat() - result[0].item.lat) * 2 + parseFloat(nStudio.lat);
	var dLng = (latLng.lng() - result[0].item.lng) * 2 + parseFloat(nStudio.lng);
	
	var minLat = nStudio.lat;
	var maxLat = dLat;
	var minLng = nStudio.lng;
	var maxLng = dLng;
	
	if (maxLat < minLat)
	{
		minLat = dLat;
		maxLat = nStudio.lat;
	}
	
	if (maxLng < minLng)
	{
		minLng = dLng;
		maxLng = nStudio.lng;
	}
*/

	var ret = "";
	ret += "<h3 id='ichiran'>店舗一覧</h3>";

		// 一番近い３件を取り出す
		var minLat = latLng.lat();
		var maxLat = latLng.lat();
		var minLng = latLng.lng();
		var maxLng = latLng.lng();
		for (var i = 0; i < 3; i++)
		{
			var nStudio = result[i].item;
			if (nStudio.lng < minLng)
			{
				minLng = nStudio.lng;
			}
			
			if (maxLng < nStudio.lng)
			{
				maxLng = nStudio.lng;
			}
			
			if (nStudio.lat < minLat)
			{
				minLat = nStudio.lat;
			}
			
			if (maxLat < nStudio.lat)
			{
				maxLat = nStudio.lat;
			}

			for (var k = 0; k < studios.length; k++)
			{
				if (nStudio.studio_id == studios[k].studio_id)
				{
					// マーカーを表示
					marker = new google.maps.Marker({
						position: new google.maps.LatLng(studios[k].lat, studios[k].lng),
						map: map,
						icon: new google.maps.MarkerImage(studios[k].icon),
						title: studios[k].studio_name,
						zIndex: k,
						visible: true
					});

					ret += "<ul>";
					ret += "<li><a href='" + studios[k].studio_web_url + "' class='name'>" + studios[k].studio_name + "</a><span class='phone'>" + studios[k].tel_no + "</span><a class='detail' href='" + studios[k].studio_web_url + "'>詳細</a><a class='reserve' href='" + studios[k].studio_reserve_url + "'>予約</a></li>";
					ret += "</ul>";

					// マーカー一覧に追加
					markers.push(marker);
				}
			}
		}
	
	$("#result")[0].innerHTML = ret;

	var latLngBounds = new google.maps.LatLngBounds(
		new google.maps.LatLng(minLat, minLng),
		new google.maps.LatLng(maxLat, maxLng)
	);
	
	map.fitBounds(latLngBounds);
}

// サービス検索
function searchService(service_id)
{
	
	if (null == studios)
	{
		return;
	}
	
	// マーカー全削除
	removeMarker();
	
	var minLng = 360;
	var maxLng = 0;
	var minLat = 180;
	var maxLat = 0;
	var service_list = new Array();

	var findStudio = new Array();
	
	for (var i = 0; i < studios.length; i++)
	{
		service_list = studios[i].service_id.split(',');
		for (var r = 0; r < service_list.length; r++)
		{
			if (service_id == service_list[r])
			{
				findStudio.push(studios[i]);
				if (studios[i].lng < minLng)
				{
					minLng = studios[i].lng;
				}
				
				if (maxLng < studios[i].lng)
				{
					maxLng = studios[i].lng;
				}
				
				if (studios[i].lat < minLat)
				{
					minLat = studios[i].lat;
				}
				
				if (maxLat < studios[i].lat)
				{
					maxLat = studios[i].lat;
				}
				// マーカーを表示
				var marker = new google.maps.Marker({
					position: new google.maps.LatLng(studios[i].lat, studios[i].lng),
					map: map,
					icon: new google.maps.MarkerImage(studios[i].icon),
					title: studios[i].studio_name,
					zIndex: i,
					visible: true
				});
				// マーカーへのイベント設定（クリックされたら）
				google.maps.event.addListener(marker, 'click', function(){
					var ret = "";
					ret += "<h3 id='ichiran'>店舗一覧</h3>";
					ret += "<ul>";
					var studio = studios[this.zIndex];
					ret += "<li><a href='" + studio.studio_web_url + "' class='name'>" + studio.studio_name + "</a><span class='phone'>" + studio.tel_no + "</span><a class='detail' href='" + studio.studio_web_url + "'>詳細</a><a class='reserve' href='" + studio.studio_reserve_url + "'>予約</a></li>";
					ret += "</ul>";
					$("#result")[0].innerHTML = ret;
				});
				// マーカー一覧に追加
				markers.push(marker);
			}
		}
	}
	
	if (0 < findStudio.length)
	{
		var ret = "";
		ret += "<h3 id='ichiran'>店舗一覧</h3>";
		ret += "<ul>";
		for (var s in findStudio)
		{
			ret += "<li><a href='" + findStudio[s].studio_web_url + "' class='name'>" + findStudio[s].studio_name + "</a><span class='phone'>" + findStudio[s].tel_no + "</span><a class='detail' href='" + findStudio[s].studio_web_url + "'>詳細</a><a class='reserve' href='" + findStudio[s].studio_reserve_url + "'>予約</a></li>";
		}
		ret += "</ul>";
		$("#result")[0].innerHTML = ret;

		if (findStudio.length == 1){
			map.setOptions(myOptions);
			map.setCenter(new google.maps.LatLng(minLat, minLng));
		} else {
			var latLngBounds = new google.maps.LatLngBounds(
				new google.maps.LatLng(minLat, minLng),
				new google.maps.LatLng(maxLat, maxLng)
			);
			map.fitBounds(latLngBounds);
		}
	} else {
		var ret = "";
		$("#result")[0].innerHTML = ret;
	}
	
	
	
}


-->

