var map = null;
var geocoder = null;
var marker = null;
var control = null;
var div_id = 'shop_map'; // 表示対象のid
var control_string = 'large';
var latitude = 36.294072; // デフォルトの緯度
var longitude = 139.378771; // デフォルトの経度
var zoom = 12; // デフォルトのzoom値
// iconの設定
var icon_src = "http://www.choi2.jp/images/common/gmap_pin.png";
var icon_size = new Array(25.0,31.0);
var icon_shadow_size = new Array(41.0,31.0);
var icon_anchor = new Array(12.5,31.0);
var info_window_anchor = new Array(12.0,15.0);

function init(){
	
	if (GBrowserIsCompatible()) {
		// divにgoogleMapを描画
		map = new GMap2($(div_id));
    	
    	// コントローラを出力
    	setControl();
    	
    	// ダブルクリックでのズーム
    	if (map.doubleClickZoomEnabled()){
			map.disableDoubleClickZoom();
		}else{
			map.enableDoubleClickZoom();
		}
		
		// センターを指定
		map.setCenter(new GLatLng(latitude, longitude), zoom);

		// ピンを出力
		marker = new GMarker(map.getCenter(),setIcon());
    	map.addOverlay(marker);
	}
}

function panTo(x, y) { 
	map.panDirection (x, y); 
}

function setIcon(){
	icon = new GIcon(); //アイコンをセット
	icon.image = icon_src;
	icon.iconSize = new GSize(icon_size[0],icon_size[1]);
	icon.shadowSize =  new GSize(icon_shadow_size[0], icon_shadow_size[1]);
	icon.iconAnchor = new GPoint(icon_anchor[0], icon_anchor[1]);
	icon.infoWindowAnchor = new GPoint(info_window_anchor[0], info_window_anchor[1]);
	return icon;
}

function setMoveEvent(){
 
	 GEvent.addListener(map, 'move',
	               function() {
	    var xy = map.getCenter();
	    $('latitude').value = xy.lat();
	    $('longitude').value = xy.lng();
	    $('zoom').value = map.getZoom();
	    map.clearOverlays();
	    
	    marker = new GMarker(map.getCenter(),setIcon());
	    map.addOverlay(marker);
	});

}

function initGoogleMapByAdd(add){
	if (GBrowserIsCompatible()) {
        map = new GMap2($(div_id));

		setControl();
        
        // GClientGeocoderを初期化
        geocoder = new GClientGeocoder();
        
        setCenterByAdd(add);
        
	    setMoveEvent();
      }
}

function setCenterByAdd(add){
	if(add != ""){ 
		geocoder.getLatLng(add,
	          function(point) {           
	              if(!point){              
		              var pattern = "(北海道|京都府|大阪府|東京都|.*?県)";
	 		          geocoder.getLatLng(add.match(pattern)[0],
				          function(point) {           
				              if(!point){
					            map.setCenter(new GLatLng(36.294072, 139.378771), 12);
				 		      } else {
				 		      	map.setCenter(point, 8);
				 		      }
				          }
				        );
	 		      } else {
	 		      	map.setCenter(point, 13);
	 		      }
	          }
	        );
    } else {
      map.setCenter(new GLatLng(36.294072, 139.378771), 12);
    }
}

function setControl(){
    if(control_string == 'large'){
		map.addControl(new GLargeMapControl());
	} else if(control_string == 'small'){
		map.addControl(new GSmallMapControl());
	}
}

function searchAddress(area){
	if ( $F('address') == "" ) {
		var add = area;
	} else {
		var add = $F('address');
	}
	
	if (GBrowserIsCompatible()) {
		geocoder = new GClientGeocoder();
		geocoder.getLatLng(add,
			function(point) {           
				if(!point){              
					alert('指定の住所はみつかりませんでした。');
				} else {
					map.setCenter(point, $F('zoom'));
				}
			}
        );
	}
}
