//var tinyIcon = null;

// 1/3
function getMotherPort(){
	
	// 「小さな」マーカー アイコンを作成します
//	tinyIcon = new GIcon();
//	tinyIcon.image = "common/gif/mm_20_blue.png";
//	tinyIcon.shadow = "common/gif/mm_20_shadow.png";
//	tinyIcon.iconSize = new GSize(12, 20);
//	tinyIcon.shadowSize = new GSize(22, 20);
//	tinyIcon.iconAnchor = new GPoint(6, 20);
//	tinyIcon.infoWindowAnchor = new GPoint(5, 1);

	TideDwr.getMotherPort(callbackMotherPort);
}

// 2/3
function callbackMotherPort(data){
	
	var batch = [];
	//alert(data[0].latitude);
	for(i=0; i<data.length; i++){
		
		var point  = new GLatLng( data[i].latitude, data[i].longitude );
		
		//if (data[i].latitude.length == 7){
		//if (data[i].city == null ){
			//batch.push( createMakerDebug( point, data[i] ) );
		//	batch.push( createMakerDebugGeocoder( point, data[i] ) );
		//} else {
			//batch.push( createMakerDebugGeocoder( point, data[i] ) );
			batch.push( createMaker( point, data[i] ) );
		//}
	}
	mgr.addMarkers(batch,5);
	
	// 標準行以外を取得
	TideDwr.getOtherPort(callbackOtherPort);
	
}

//3/3
function callbackOtherPort(data){
	
	var batch = [];
	for(i=0; i<data.length; i++){
	
		var point  = new GLatLng( data[i].latitude, data[i].longitude );
		
		//if (data[i].latitude.length == 7){
		//if (data[i].city == null ){
			//batch.push( createMakerDebug( point, data[i] ) );
		//	batch.push( createMakerDebugGeocoder( point, data[i] ) );
		//} else  {
			//batch.push( createMakerDebugGeocoder( point, data[i] ) );
			batch.push( createMaker( point, data[i] ) );
		//}
	}
	mgr.addMarkers(batch,9);

	mgr.refresh();
}


function createMakerDebug(point, data){
	
	var marker = new GMarker( point ,{ draggable :true } );
	//var marker = new GMarker( point  );
	marker.value = data.placeNmJp;
	var myHtml = '' + '<b>' + marker.value + '</b><br/>' + data.latitude + ',' + data.longitude + '';
	
	GEvent.addListener(marker, "click", function(point) {
		var html = myHtml + '<br/>' + point.y + ',' + point.x 
		         + "<br/><input type='button' onclick=\"updateMap('" + marker.value + "','" +  point.y + "','" + point.x
		         + "');\" value='この値で緯度経度を修正'/>";
		marker.openInfoWindowHtml( html );
    });
	
	return marker;
}

var mm = null;
function createMakerDebugGeocoder(point, data){
	
	var marker = new GMarker( point ,{ draggable :true } );
	//var marker = new GMarker( point  );
	marker.value = data.placeNmJp;
	//var myHtml = '' + '<b>' + marker.value + '</b><br/>' + data.latitude + ',' + data.longitude + '';
	
	GEvent.addListener(marker, "click", function(point) {
		mm = marker;
		geocoder.getLocations(point, geoCall);
    });
	
	return marker;
}

function geoCall(addresses){
	
	if (addresses.Status.code == G_GEO_SUCCESS){

		var pref = "なし";
		var city = "なし";
		var town = "なし";
		if (addresses.Placemark[0].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName != null){
			pref = addresses.Placemark[0].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
		}
		if (addresses.Placemark[0].AddressDetails.Country.AdministrativeArea.Locality != null){
			city = addresses.Placemark[0].AddressDetails.Country.AdministrativeArea.Locality.LocalityName;
		}
		if (addresses.Placemark[0].AddressDetails.Country.AdministrativeArea.Locality != null ){
			town = addresses.Placemark[0].AddressDetails.Country.AdministrativeArea.Locality.DependentLocality.DependentLocalityName;
		}
			
		
		var html = '<b>' + mm.value + '</b><br/>' + pref + " , " + city + " , " + town 
		+ "<br/><input type='button' onclick=\"updatePref('" 
		+ mm.value + "','" + pref
		  		   + "','" + city
		+ "');\" value='この値で都道府県を修正'/>";
		mm.openInfoWindowHtml( html );
	} else {
		mm.openInfoWindowHtml( "変換しっぱい" );
	}
}

function createMaker(point, data){
	
	var icon = new GIcon();
	icon.image = "common/gif/mm_20_blue.png";
	icon.shadow = "common/gif/mm_20_shadow.png";
	//icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	//icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	icon.iconSize = new GSize(12, 20);
	icon.shadowSize = new GSize(22, 20);
	icon.iconAnchor = new GPoint(6, 20);
	icon.infoWindowAnchor = new GPoint(5, 1);

	var marker = new GMarker( point ,icon );
	marker.value = data.id;
	var myHtml = '' + '<div class=\'showInfoWindow\'><span class=\'tidePlace\'>' + data.placeNmJp + '</span><span> － </span>'
	                //+ "<input type=\'button\' class=\'btnShowTide\' onclick=\"showTide('" + marker.value + "','" + data.placeNmJp + "','" + data.zo + "','" + data.maxRatio + "','" + data.minRatio + "');\" value='潮汐表示'/>";
					+ "<a class=\'btnShowTide\' href=\"javascript:showTide('" + marker.value + "','" + data.placeNmJp + "','" + data.zo + "','" + data.maxRatio + "','" + data.minRatio + "','" + data.prefecture + "','" + data.city + "');\">潮汐表示</a></div>";
	
	GEvent.addListener(marker, "click", function(point) {
		marker.openInfoWindowHtml( myHtml );
    });
	
	return marker;
}



// DEBUG /////////////////////////////////////////////////////////////////
// 地図調整用
function updateMap(value, lat, lng){
	//alert(value);
	//alert(lat);
	//alert(lng);
	TideDwr.updateLatLng(value, lat, lng, callbackUpdateMap);
}

function callbackUpdateMap(data){
	if (data >= 0){
		alert("成功");
	} else {
		alert("失敗");
	}
}

function updatePref(value, preNm, cityNm){
	TideDwr.updatePref(value, preNm, cityNm, callbackUpdateMap);
}
