// Google Maps
// 
// elementId = '#gmap';
// 
var kokode = function(elementId){
	var gmapObj	=undefined;
	var marker	=[];
	var sMarker	=[];
	var center	={lat:35.65861,lng:139.745447}; //初期値：東京タワー
	
	// 対応ブラウザのチェック
	if(!GBrowserIsCompatible()){
		return false;
	}else{
		gmapObj=new GMap2($(elementId).get(0));
		gmapObj.addControl(new GLargeMapControl());
		//gmapObj.addControl(new GMapTypeControl());
		
		cookieLat=$.cookie('kokode_lat');
		cookieLng=$.cookie('kokode_lng');
		if(cookieLat && cookieLng){
			center={lat:cookieLat,lng:cookieLng};
		}
		gmapObj.setCenter(new GLatLng(center.lat, center.lng), 11);
		
		//return gmapObj;
		// オブジェクトを返す
		return {
			// 中心に十字を表示
			cwj_center: function(){
					var centerCross;
					var icon=new GIcon();
					icon.image='../img/cross.gif';
					icon.iconSize=new GSize(70,70);
					icon.iconAnchor=new GPoint(35,35);
					centerCross=new GMarker(gmapObj.getCenter(),icon);
					gmapObj.addOverlay(centerCross);
					GEvent.addListener(gmapObj,'move',function(){
							gmapObj.removeOverlay(centerCross);
							centerCross=new GMarker(gmapObj.getCenter(),icon);
							gmapObj.addOverlay(centerCross);
						});
					$(window).bind("resize",function(){
							gmapObj.removeOverlay(centerCross);
							centerCross=new GMarker(gmapObj.getCenter(),icon);
							gmapObj.addOverlay(centerCross);
						});
				},
			// 中心座標を返す
			cwj_getCenter: function(){
					return gmapObj.getCenter();
				},
			cwj_getCenterLatLng: function(){
					var point=this.cwj_getCenter();
					return {lat:point.lat(),lng:point.lng()};
				},
			cwj_getZoom: function(){
					return gmapObj.getZoom();
				},
			// 緯度経度を指定して移動
			cwj_goto: function(lng,lat,zoom){
					if(zoom==undefined){
						zoom=this.cwj_getZoom();
					}
					gmapObj.setCenter(new GLatLng(lat, lng),zoom);
				},
			// 全ての表示プロット（レイヤー）を削除（中心十字を再描画）
			cwj_unplotall: function(){
					gmapObj.clearOverlays();
					this.cwj_center();
				},
			// 緯度経度を指定してプロット
			cwj_plot: function(lng,lat){
					//this._cwj_plot(lng,lat,id);
					var point=new GPoint(lng,lat);
					var i=marker.length;
					marker[i]=new GMarker(point);
					gmapObj.addOverlay(marker[i]);
				},
			// 店舗群をプロットする
			cwj_shops: function(shops){
					/*
					for(var index in shops){
						this.cwj_shop(shops[index]);
					}
					*/
					for(var i=0;i<shops.length;i++){
						this.cwj_shop(shops[i]);
					}
				},
			// 店舗をプロットする
			cwj_shop: function(shop){
					var i=sMarker.length;
					sMarker[i]=new GMarker(new GPoint(shop.lng,shop.lat));
					gmapObj.addOverlay(sMarker[i]);
					// マーカークリック時の動作
					GEvent.addListener(sMarker[i],'click',function(){
							// 吹き出しの処理
							var html='<div style="width:200px;height:280px;padding:10px">';
							html+='<div><strong>'+shop.name+'</strong></div>';
							if(shop.image!=undefined){
								html+='<div style="padding:3px 0 5px;font-size:10px;"><img src="'+shop.image+'" style="width:160px;" /><br />画像提供：ぐるなび</div>';
							}
							//html+='<div>'+shop.address+'</div>';
							html+='<div><a href="javascript:void(0);" onclick="plotPointByCafe('+shop.lng+','+shop.lat+',\''+shop.name+'\',\''+shop.address+'\');"><img src="img/button_plot.gif" /></a></div>';
							html+='</div>';
							sMarker[i].openInfoWindowHtml(html);
						});
				},
			// 店舗のプロットを削除する
			cwj_unplotshop: function(){
					/*
					for(var index in sMarker){
						gmapObj.removeOverlay(sMarker[index]);
					}
					*/
					for(var i=0;i<sMarker.length;i++){
						gmapObj.removeOverlay(sMarker[i]);
					}
					sMarker=[];
				},
			// ジオコーディング
			cwj_geoCoding: function(address){
					var geocoder = new GClientGeocoder();
					var result;
					geocoder.getLatLng(
							address,function(point){
								if(point==null){
									alert("見つかりませんでした。\n他のキーワードを指定してください。");
								}else{
									gmapObj.setCenter(point);
									gmapObj.setZoom(16);
								}
						});
					return result;
				},
			_cwj_marker: function(id){
					return marker[id];
				}
		};
	}
};
