
google.load("maps","2",{"locale":"ja_JP"});
window.onunload=function(){google.maps.Unload;}

/////////////////////////////////////////////////////////////////////////////

//latを取得
_glat=function(a){return _ge('latlng_'+a).value.split(",")[0];}

//lngを取得
_glng=function(a){return _trim(_ge('latlng_'+a).value.split(",")[1]);}

//zomを取得
_gzom=function(a){return _ge('zoom_'+a).value;}

/////////////////////////////////////////////////////////////////////////////

//icon
//blue,red,green,ltblue,yellow,purple,pink,orange,msmarker.shadow.png
//blue-dot,red-dot,green-dot,ltblue-dot,yellow-dot,purple-dot,pink-dot,orange-dot,msmarker.shadow.png
//blue-pushpin,red-pushpin,grn-pushpin,ltblu-pushpin,ylw-pushpin,purple-pushpin,pink-pushpin,pushpin_shadow
_gmic=function(a){
	var s=new google.maps.Icon();
	s.shadow="http://maps.google.co.jp/mapfiles/ms/icons/msmarker.shadow.png";
	s.iconSize=new GSize(32,32);
	s.shadowSize=new GSize(59,32);
	s.iconAnchor=new GPoint(16,32);			//ポイントする位置
	s.infoWindowAnchor=new GPoint(16,0);	//吹き出し先端
	//s.infoShadowAnchor=new GPoint(23,12);
	var t=new google.maps.Icon(s);
	t.image="http://maps.google.co.jp/mapfiles/ms/icons/"+a+".png";
	if(!a)t.image="http://maps.google.co.jp/mapfiles/ms/icons/red.png";
	
	return t;
}

/////////////////////////////////////////////////////////////////////////////

//single map
//a:pid b:clat c:clng d:zoom i:lat j:lng e:infotitle f:jumpaddress g:centermarker h:drag
_gms=function(a,b,c,d,e,f,g,h,i,j){
	if(!b)b=35.671989;
	if(!c)c=139.763965;
	if(!d)d=17;
	
	var s=new google.maps.Map2(_ge("map_"+a));
	s.addControl(new google.maps.SmallZoomControl());
	s.setCenter(new google.maps.LatLng(b,c),d,G_NORMAL_MAP);
	if(g){
		var t=new google.maps.Marker(s.getCenter(),{icon:_gmic('green')});
		s.addOverlay(t);
		_ge('latlng_'+a).value=s.getCenter().toUrlValue().toString().replace("(","").replace(")","");
		_ge('zoom_'+a).value=s.getZoom();
		google.maps.Event.addListener(s,"move",function(){
			s.removeOverlay(t);
			t=new google.maps.Marker(s.getCenter(),{icon:_gmic('green')});
			s.addOverlay(t);
			_ge('latlng_'+a).value=s.getCenter().toUrlValue().toString().replace("(","").replace(")","");
			_ge('zoom_'+a).value=s.getZoom();
    	});
	}
	
	var u=new google.maps.Marker(new google.maps.LatLng(i,j),{title:e,draggable:h,icon:_gmic('pink-dot')});
	var v;
	if(f)google.maps.Event.addListener(u,"click",function(){window.open(f,'');});
	if(b&&c&&h){
	    google.maps.Event.addListener(u,"dragstart",function(){s.closeInfoWindow();v=u.getPoint();});
   		google.maps.Event.addListener(u,"drag",function(){_ge('latlng_'+a).value=u.getPoint().toUrlValue();});
		google.maps.Event.addListener(u,"dragend",function(){if(confirm("変更しても良いですか？")){_smu(a);}else{u.setPoint(v);}});
	}
	s.addOverlay(u);
}

//single map simple
//a:pid b:infotitle c:jumpaddress d:centermarker e:drag
_gmss=function(a,b,c,d,e){
	_gms(a,_glat(a),_glng(a),parseInt(_gzom(a)),b,c,d,e,_glat(a),_glng(a));
}

//single map showaddress
//a:pid b:lat c:lng d:infotitle e:jumpaddress f:centermarker g:drag
_gmsa=function(a,b,c,d,e,f,g){
    var s=new google.maps.ClientGeocoder();
	s.getLatLng(_ge('adr_'+a).value,function(t){
		if(t){
			_gms(a,t.lat(),t.lng(),17,d,e,f,g,b,c);
		}else{
			alert(_ge('adr_'+a).value+"は見つかりません。");
		}
	});
}

/////////////////////////////////////////////////////////////////////////////


//category map
//a:cid b:lat c:lng d:zoom e:xml f:drag
_gmc=function(a,b,c,d,e,f){
	var s=new google.maps.Map2(_ge("map_"+a));
	s.addControl(new google.maps.LargeMapControl());
	s.addControl(new google.maps.ScaleControl());
	s.addControl(new google.maps.MapTypeControl());
	s.setCenter(new google.maps.LatLng(b,c),d,G_SATELLITE_MAP);
	//__gmap_category.enableScrollWheelZoom();
	
	if(_ge('latlng_'+a)&&_ge('zoom_'+a)){
		_ge('latlng_'+a).value=s.getCenter().toUrlValue().toString().replace("(","").replace(")","");
		_ge('zoom_'+a).value=s.getZoom();
		google.maps.Event.addListener(s,"move",function(){
			_ge('latlng_'+a).value=s.getCenter().toUrlValue().toString().replace("(","").replace(")","");
			_ge('zoom_'+a).value=s.getZoom();
		});
	}

	//キャッシュされたxmlを使わない。Postでも良い
	var date=new Date();
	var timestamp=date.getTime();
 	e+="&timestamp="+timestamp;

	google.maps.DownloadUrl(e,function(responseText){
			var t=new XML.ObjTree();
			var u=t.parseXML(responseText);
			var v=u.markers.marker;
			//googleの関数が不可
			//var u=google.maps.Xml.parse(request.responseText);
	        //var v=u.documentElement.getElementsByTagName("marker");
			var w=[];

			if(v.length>1){}else{var v=[u.markers.marker];}
    	    for(var x=0;x<v.length;x++){
				var pid=v[x].pid;
				var latlng=new google.maps.LatLng(parseFloat(v[x].lat),parseFloat(v[x].lng));
				//googleの関数が不可
				//var latlng=new google.maps.LatLng(parseFloat(v[x].getAttribute("lat")),parseFloat(v[x].getAttribute("lng")));
				var title=v[x].title;
				var excerpt=v[x].excerpt;
				var img=v[x].img;
				var link=v[x].link;
				var date=v[x].date;
				var y=_gcm(latlng,title,excerpt,img,link,date,f,a,pid);
           	 	w.push(y);
        	}
			var z=new google.maps.MarkerManager(s);
        	z.addMarkers(w,0);
        	z.refresh();
	});
/*
	var request=google.maps.XmlHttp.create();
	request.open("GET",e,true);
	request.onreadystatechange=function(){
		if(request.readyState==4){}
	};
	request.send(null);
*/
}

//create marker
//h:cid i:pid a:latlng b:title c:excerpt d:img e:link f:date g:drag
_gcm=function(a,b,c,d,e,f,g,h,i){
	var s=new google.maps.Marker(a,{title:b,draggable:g,icon:_gmic('pink-dot')});
	var t;
    google.maps.Event.addListener(s,"click",function(){
		s.openInfoWindowHtml("<p class=\"gmap_info_title\"><a href=\""+e+"\">"+b+"</a></p><div class=\"gmap_info_content\">"+c+" <a href=\""+e+"\">続きを読む>></a>"+(d?"<br /><br /><a href=\""+e+"\"><img src=\""+d+"\" alt=\""+b+"\" class=\"imgbox\"></a>":"")+"</div>");
	});
    google.maps.Event.addListener(s,"dragstart",function(){s.closeInfoWindow();t=s.getPoint();});
    google.maps.Event.addListener(s,"drag",function(){_ge('latlng_'+h).value=s.getPoint().toUrlValue();});
	google.maps.Event.addListener(s,"dragend",function(){if(confirm("変更しても良いですか？")){_cmsu(h,i);}else{s.setPoint(t);}});
    return s;
}

//dist
//a,b:緯度経度1 c,d:緯度経度2
_gds=function(a,b,c,d){
	var s=(a-c)*110946;
	var t=(b-d)*111319;
	return Math.ceil(Math.sqrt(s*s+t*t));
}

//category map showaddress
//a:cid b:zoom c:xml
_gmca=function(a,b,c){
    var s=new google.maps.ClientGeocoder();
	s.getLatLng(_ge('adr_'+a).value,function(t){
		if(t){
			_gmc(a,t.lat(),t.lng(),13,c);
		}else{
			alert(_ge('adr_'+a).value+"は見つかりません。");
		}
	});
}

/////////////////////////////////////////////////////////////////////////////

//geocoder map
//a:lat b:lng c:zom　はじめの位置
_gmg=function(a,b,c){
	if(!a)a=35.671989;
	if(!b)b=139.763965;
	if(!c)c=17;
	
	var s=new google.maps.Map2(_ge('map_geocoding'));
	s.addControl(new google.maps.SmallZoomControl());
	s.addControl(new google.maps.MapTypeControl());
    s.setCenter(new google.maps.LatLng(a,b),c);
	var t=new google.maps.Marker(s.getCenter(),{icon:_gmic('green')});
	s.addOverlay(t);
	_ge('latlng_geocoding').value=s.getCenter().toUrlValue().toString().replace("(","").replace(")","");
	_ge('zoom_geocoding').value=s.getZoom();
	google.maps.Event.addListener(s,"move",function(){
		s.removeOverlay(t);
		t=new google.maps.Marker(s.getCenter(),{icon:_gmic('green')});
		s.addOverlay(t);
		_ge('latlng_geocoding').value=s.getCenter().toUrlValue().toString().replace("(","").replace(")","");
		_ge('zoom_geocoding').value=s.getZoom();
    });
}

//geocoder showaddress
//a:zom
_gmga=function(){
    var s=new google.maps.ClientGeocoder();
	s.getLatLng(_ge('adr_geocoding').value,function(t){
		if(t){
			_gmg(t.lat(),t.lng());
		}else{
			alert(_ge('adr_geocoding').value+"は見つかりません。");
		}
	});
}

/////////////////////////////////////////////////////////////////////////////


