var baseDist = 5000;
var baseFare = 0;
var meterDist = 5000;
var meterFare = 1500;
var pc_number = 1;
var supPrice = 5250;
var pc_price = 0;
var pc_s; //[baseDist]mまで[baseFare]円、[meterDist]mごとに[meterFare]円

window.onload = init;

var map , base_icon , center_icon , base_marker , center_marker;
var base_lng = 139.39505696296692;  var base_lat = 35.3532467277876;


//□初期化
function init(){
	map = new GMap( document.getElementById( "map" ) );
	directions = new GDirections(map);
	var points = new Array();
	directions.loadFromWaypoints(points);
	map.addControl( new GLargeMapControl() );					//でっかいコントローラ（尺度にメモリが付いている版）
	map.addControl( new GMapTypeControl() );					//マップとサテライトの切り替えのコントローラ
	map.centerAndZoom( new GPoint( 139.39505696296692 , 35.3532467277876 ) , 3 );	//初期座標 , 尺度（0が詳細）
	geocoder = new GClientGeocoder();

	//ベースアイコン
	base_icon = new GIcon();
	base_icon.image				= "./img/marker.png";
	base_icon.shadow			= "./img/shadow.png";
	base_icon.iconSize			= new GSize( 20 , 34 );
	base_icon.shadowSize		= new GSize( 37 , 34 );
	base_icon.iconAnchor		= new GPoint(  9, 34 );
	base_icon.infoWindowAnchor	= new GPoint(  9,  2 );
	base_icon.infoShadowAnchor	= new GPoint( 18, 25 );

	//センターアイコン
	center_icon = new GIcon();
	center_icon.image			= "./img/gmc_center.png";
	center_icon.shadow			= "./img/gmc_shadow.png";
	center_icon.iconSize		= new GSize(  23 , 23 );
	center_icon.shadowSize		= new GSize(  29 , 29 );
	center_icon.iconAnchor		= new GPoint( 11, 11 );

	base_marker = new GMarker( new GPoint( base_lng , base_lat ) , base_icon );		//ベースマーカーの作成
	map.addOverlay( base_marker );

	GEvent.addListener( map , "moveend" , eventMapMoveend );
	
	showLatLon= function (){
	    var pointc = map.getCenter()
	    document.f1.lon.value=pointc.x
	    document.f1.lat.value=pointc.y
	    
	};

	eventMapMoveend();
}
//住所から経緯度を取得
function showAddress(address) {
	if (geocoder) {
		geocoder.getLatLng(
		address,
		function (point) {
			if (!point) {
				alert("住所の入力が正しくありません。");
			} else {
				map.setCenter(point, 14);
				var marker = new GMarker(point, icon);
				map.addOverlay(marker);
			}
		}
		);
	}
}
//台数計算
function pcSupport(pc_number){
	if(!pc_number){
		alert("サポート台数を入力してください。");
	} else if(pc_number == 1){
		pc_price = 5250;
	} else if(pc_number >= 1 || pc_number <= 5){
		pc_price = 2750 + 2500 * pc_number;
	} else{
		pc_s = ("別途お見積致しますのでお気軽にご相談下さい。");
	}
}
//□移動後のイベント
function eventMapMoveend(){
	var center = map.getCenterLatLng();

	if( center_marker ){ map.removeOverlay( center_marker ); }							//センターマーカーを消す
	center_marker = new GMarker( new GPoint( center.x , center.y ) , center_icon );		//センターマーカーの作成
	map.addOverlay( center_marker );

	calcSupportFare( center.x , center.y );
}
//□基準点移動
function baseMove(){
	var center = map.getCenterLatLng();

	map.removeOverlay( base_marker );												//ベースマーカーを消す
	base_marker = new GMarker( new GPoint( center.x , center.y ) , base_icon );		//ベースマーカーの作成
	map.addOverlay( base_marker );

	base_lng = center.x;  	base_lat = center.y;

	calcSupportFare( center.x , center.y );
}
//□サポート料金を計算
function calcSupportFare( lng , lat ){
	var distance = FUNMapCommon_Map_convPointsToDistance( lng , lat ,  base_lng , base_lat );	//距離計算
	distance = Math.round( distance * 1000 * 1.15 );	//mに変換

	var distance1 = distance;
	var distance2 = distance;

	//料金計算
	var fare1 = String( calcSupportFare_convDistToFare( distance1 ) ) + " 円";
	var fare2 = String( calcSupportFare_convDistToFare( distance2 ) ) + " 円";

	//表示用値の生成
	if( distance >= 2000 ){
		var dispDistance = String( Math.round( distance / 100 ) / 10 ) + " Km";	//表示用距離（Km換算）
		var supTime = Math.round(( distance / 100 ) / 10 / 0.3 + 5);
	} else {
		var dispDistance = String( distance ) + " m";
		var supTime = Math.round(( distance / 100 ) / 10 / 0.3 + 5);
	}
	if( fare1 != fare2 ){
		var dispFare = fare1 + " ～ " + fare2;
	} else {
		var dispFare = fare1;
	}

	if(distance >= 1){
		document.getElementById( "supportFare" ).innerHTML = "検索頂いた場所と弊社との距離： 約 <strong>" + dispDistance + "</strong><br />ご入力頂いた場所へは最短<strong>" + supTime + "分</strong> でお伺いする事が出来ます。<br />お客様のご住所の場合PC1台のサポート料金は：<strong>" + dispFare + "以内</strong>になります。";
	}
	if(pc_s){
		document.getElementById( "supportFare" ).innerHTML = "一度に5台以上サポートをご利用のお客様は別途お見積致しますので,お気軽にご相談下さい。<a href=''>こちら</a>";
	}

}
//□サポート料金を計算 - 距離から料金を算出
function calcSupportFare_convDistToFare( distance ){
	var fare = pc_price;
	if( ( distance - baseDist ) > 0 ){
		fare += Math.ceil( ( distance - baseDist ) / meterDist ) * meterFare;
	}
	return fare;
}
//□汎用関数 - マップ - 座標間から距離を取得する
function FUNMapCommon_Map_convPointsToDistance( lng1 , lat1 , lng2 , lat2 ){
	var lng1 = ( lng1 * Math.PI ) / 180;
	var lat1 = ( lat1 * Math.PI ) / 180;
	var lng2 = ( lng2 * Math.PI ) / 180;
	var lat2 = ( lat2 * Math.PI ) / 180;

	var t = Math.sin( lat1 ) * Math.sin( lat2 ) + Math.cos( lat1 ) * Math.cos( lat2 ) * Math.cos( lng1 - lng2 );
	var d = 20000 * Math.acos( t ) / Math.PI;

	return d;
}