//<![CDATA[

var gmap=function(init){
	
	var self=this;
	this.eid='gmap' || init.id;
	this.lat=35.62493079773405 || init.lat;
	this.lng=139.42418575286865 || init.lng;
	this.zoom=15 || init.zoom;
	this.mk=[];
	
	this.arrow=new GIcon();
	this.arrow.image='http://www.google.com/intl/en_ALL/mapfiles/arrow.png';
	this.arrow.shadow='http://www.google.com/intl/en_ALL/mapfiles/arrowshadow.png';
	this.arrow.iconSize=new GSize(31,27);
	this.arrow.shadowSize=new GSize(31,27);
	this.arrow.iconAnchor=new GPoint(8,27);
	this.arrow.infoWindowAnchor=new GPoint(5,1);
	
	this.map=new GMap2(document.getElementById(this.eid));
	this.map.addControl(new GLargeMapControl());
	this.map.addControl(new GOverviewMapControl(new GSize(125,125)));
	this.map.enableContinuousZoom();
	
	/*Information Window 版
	this.sve=document.createElement('div');
	this.sve.style.width='300px';
	this.sve.style.height='300px';
	*/
	this.sve=document.getElementById('streetView');//マップと画像を別々に
	
	
	
	
	//地図を表示
	this.mapView=function(){
		self.map.setCenter(new GLatLng(self.lat,self.lng),self.zoom);
		self.map.addOverlay(new GStreetviewOverlay());//ブルーライン
	}
	
	
	//ジオコーディング
	this.geocoding=function(params){
		var g=new GlocalSearch();
		g.setSearchCompleteCallback(self,function(){
			var r=g.results[0];
			if(typeof(r)==="object"){
				self.lat=r.lat;
				self.lng=r.lng;
				self.zoom=(params.zoom)?params.zoom:self.zoom;
				if(params.mapView) self.mapView();
				if(params.setMark) self.setMark(params);
				if(params.streetView) self.streetView();
			}else{
				//alert("位置情報を取得することができません");
			}
		});
		g.execute(params.addr);
	}
	
	
	//マーカー配置
	this.setMark=function(params){
		var latlng=new GLatLng(self.lat,self.lng);
		self.mk=[{
			marker:new GMarker(latlng,self.arrow),
			text:params.txt
		}];
		var m=self.mk[self.mk.length-1].marker;
		if(params.txt){
			GEvent.addListener(self.mk[self.mk.length-1].marker,'click',function() {
				self.map.panTo(latlng);
				m.openInfoWindowHtml(params.txt);
			});
			$('#marker'+self.mk.length).click(function(){
				self.map.panTo(latlng);
				m.openInfoWindowHtml(params.txt);
			});
		}
		self.map.addOverlay(self.mk[self.mk.length-1].marker);
	}
	
	
	//ストリートビュー用マーカー配置
	this.streetView=function(){
		self.camera=new GMarker(new GLatLng(35.62768655665466,139.4552779197693),{draggable:true});
		GEvent.addListener(self.camera,'click',function(){//クリックされたらビューを表示
			//マップと画像を別々に
			var pos=self.camera.getPoint();
			self.svObj=new GStreetviewPanorama(self.sve,{latlng:pos});
			GEvent.addListener(self.svObj,'initialized',function(pos){//ビューの移動とマーカーを同期
				self.map.closeInfoWindow();
				self.map.panTo(pos.latlng);
				self.camera.setPoint(pos.latlng);
			});
			/*
			//Information Window 版
			var pos=self.camera.getPoint();
			self.svObj=new GStreetviewPanorama(self.sve,{latlng:pos});
			self.camera.openInfoWindow(self.sve);
			//self.test();
			GEvent.addListener(self.svObj,'initialized',function(pos){//ビューの移動とマーカーを同期
				//var pos=self.camera.getPoint();
				//self.map.panTo(pos.latlng);
				self.camera.setPoint(pos.latlng);
			});
			*/
		});
		GEvent.addListener(self.camera,'dragstart',function(){//ドラッグ開始でビューを閉じる
			self.map.closeInfoWindow();
			if(!self.svObj && self.svObj!=undefined) self.svObj.remove();
		});
		GEvent.addListener(self.camera,'dragend',function(){//ドラッグ終了なら、クリック扱いにする
			GEvent.trigger(self.camera,'click');
		});
		self.map.addOverlay(self.camera);
		self.camera.openInfoWindowHtml('このアイコンをドラッグして<br />青く強調された道に置いてください。<br />周辺の画像が見られます。');
		GEvent.trigger(self.camera,'click');
	}
	
	
	
	
}

//]]>
