var g_map;
google.load('maps', '2.x');

//------------------------------------------------
// 初期化
//------------------------------------------------
function initialize() {
	if(!GBrowserIsCompatible()) {
		alert('かわいそうに、ブラウザが地図に対応できていない。');
		location.href = '/';
		return;
	}
	
	//
	g_map = new GMap2(document.getElementById("map"));
	g_map.enableScrollWheelZoom();
	g_map.addMapType(G_PHYSICAL_MAP);
	g_map.addMapType(G_SATELLITE_3D_MAP);
	g_map.addControl(new GLargeMapControl());
	g_map.addControl(new GMenuMapTypeControl());
	//g_map.setMapType(G_PHYSICAL_MAP);
	GEvent.addListener(g_map, 'moveend',search);
	
	// 初期位置
	l = google.loader.ClientLocation;
	if(l != null) {
		lat = l.latitude;
		lng = l.longitude;
		z = 12;
	} else {
		lat = 37.6;
		lng = 139.7;
		z = 5;
	}
	g_map.setCenter(new GLatLng(lat, lng), parseInt(z));
}



//------------------------------------------------
// 検索
//------------------------------------------------
var g_jsonp  = null,g_lat,g_lng,g_search_stop=0;
function search() {
	c = g_map.getCenter();
	b = g_map.getBounds();
	sw = b.getSouthWest();
	ne = b.getNorthEast();
	
	// 再検索判定
	if(Math.abs(c.lat() - g_lat) < 0.01 && Math.abs(c.lng() - g_lng) < 0.01) return;
	g_lat = c.lat();
	g_lng = c.lng();
	if(g_search_stop == 1) {
		g_search_stop = 0;
		return;
	}
	
	// リクエスト
	js  = 'http://ajax.googleapis.com/ajax/services/search/local?v=1.0&hl=jp&rsz=large&start=1';
	js += '&key=ABQIAAAA83NMFeFoo1GTRXsYjpZ-IhTdxESO30b0KXpmGnWmQPc5y9NbAxQ6ET8TB_Ue6h_WYfARtaR66GAwbw';
	js += '&callback=search_result';
	js += '&sll='+c.lat()+','+c.lng();
	js += '&sspn='+(ne.lat()-sw.lat())/2+','+(ne.lng()-sw.lng())/2;
	// 自宅とる工夫
	//js += '&mrt=blended';
	js += '&mrt=kmlonly';
	js += '&q='+encodeURI('私の家 | 僕の家 | 自宅');
	//js += '&q='+encodeURI('"自宅" "maps.google.com/maps/"');
	
	if(g_jsonp != null) {
		document.getElementsByTagName("head").item(0).removeChild(g_jsonp);
		delete g_jsonp;
	}
	g_jsonp = document.createElement('script');
	g_jsonp.setAttribute('type', 'text/javascript');
	g_jsonp.setAttribute('charset', 'utf-8');
	g_jsonp.setAttribute('src', js);
	document.getElementsByTagName('head').item(0).appendChild(g_jsonp);
}
function search_result(json) {
	icon_clear();
	for(var i=0;i < json.responseData.results.length;i ++) {
		rec = json.responseData.results[i];
		html  = '<b><a href="'+rec.url+'" target="_blank">'+rec.titleNoFormatting+'</a></b><br />';
		html += '<div style="color:#333333;font-size:12px;width:200px;">'+rec.content+'</div>';
		icon_set(rec.lat,rec.lng,html);
	}
}



//------------------------------------------------
// アイコン関係
//------------------------------------------------
var icon_cnt = 0,icon_mrk = [];
//設置
function icon_set(lat,lng,html) {
	var p = new GLatLng(lat,lng);
	
	var tmp = new GIcon();
	tmp.image = './home.gif';
	tmp.iconSize   = new GSize(32, 32);
	tmp.iconAnchor = new GPoint(16,16);
	icon_mrk[icon_cnt] = new GMarker(p,{icon:tmp,draggable: false});
	
	// 吹き出し
	icon_mrk[icon_cnt].no = icon_cnt;
	GEvent.addListener(icon_mrk[icon_cnt], "click", function() {
		g_map.openInfoWindowHtml(this.getPoint(),html);
	});
	
	//マーカー登録
	g_map.addOverlay(icon_mrk[icon_cnt]);
	icon_cnt ++;
}
//クリア
function icon_clear() {
	for(i = 0;i < icon_cnt;i ++) {
		if(icon_mrk[i]) {
			g_map.removeOverlay(icon_mrk[i]);
			delete icon_mrk[i];
		}
	}
	icon_cnt = 0;
}


//------------------------------------------------
google.setOnLoadCallback(initialize);
