var web_search_flag = false;
var class_selected_id = 1;	
var gmarkers = [];
var htmls = [];
var map;

// safari文字化けの対処 2006.09.22 http://la.ma.la/blog/diary_200609220110.htm
var ajax_filter = function(t){return t};
if(navigator.appVersion.indexOf( "KHTML" ) > -1){
    ajax_filter = function(t){
        var esc = escape(t);
        return(esc.indexOf("%u") < 0 && esc.indexOf("%") > -1) ? decodeURIComponent(esc) : t
    }
}

	// 初期化処理
	function init(){
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());		    
		map.setCenter(new GLatLng(35.686720682320455, 139.69459533691406), 4);
	}

	// 検索分野の切り替え
	function changeClass(id) {
		if(class_selected_id == id) return;

		$('class'+class_selected_id).style.color = '#c0c0c0';
		$('class'+id).style.color = '#ff1493';

		class_selected_id = id;

	    	// 都道府県を取得
	    	var dat = $('ken').options[$('ken').selectedIndex].value
		dat = dat.split(',')
		if(dat[0]== '00') return;

		// 同時に該当の都道府県で検索
		searchWeb('', 1, class_selected_id);

	}

	// Ajax検索
	function searchWeb(query, page, class_kind) {

	    	if (web_search_flag) return;
	
	    	if (page == undefined) page = 1;
	    	if (class_kind == undefined) class_kind = class_selected_id;
	    
	    	// 都道府県を取得
	    	var dat = $('ken').options[$('ken').selectedIndex].value
		dat = dat.split(',')

		if(dat[0]== '00') return;

        	// MAP上のアイコンなどをクリア
		removeResults();

		// 該当都道府県に移動
		map.panTo(new GLatLng(dat[2], dat[1])); 

		// 検索結果領域クリア
		$('result').innerHTML = '<span style="font-weight:bold; font-size:small; color:orange;">Loading...</span>';
		$('pager').innerHTML = '';

		// プラモ屋情報検索
		var en_query = encodeURIComponent(query);
	    	var pars  = 'k=' + dat[0] + '&q=' + en_query + '&p=' + page + '&c=' + class_kind;
//alert(pars);
	    	new Ajax.Request('/cgi-bin/p_search2.cgi', {parameters:pars, onComplete:updateResult});
		
	    	web_search_flag = true;
	}

	// 復帰
	function updateResult(r) {
		web_search_flag = false;
//alert("test");
		// MAP上のアイコンなどをクリア
		removeResults();

		// サーバからのリプライを取得
		var xmlDoc = r.responseXML;

		// 検索パラメタ取得
		var param = xmlDoc.documentElement.getElementsByTagName("param");
		var keyword = param[0].getAttribute("keyword");
		var ken_id = param[0].getAttribute("ken_id");
		var page = param[0].getAttribute("page");
		var results_num = param[0].getAttribute("results_num");
		var class_kind = param[0].getAttribute("class_kind");

		var pager = '';
		if(page > 1){ // 前へ
			var prev_page = Number(page) - 1;
			pager += '<span id="prev_page" onclick="searchWeb(\'' + keyword + '\', ' + prev_page + ', ' + class_kind + ');">前へ</span>';
		}
		pager += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
		if(results_num == 20){ // 次へ
			var next_page = Number(page) + 1;
			pager += '<span id="next_page" onclick="searchWeb(\'' + keyword + '\', ' + next_page + ', ' + class_kind + ');">次へ</span>';
		}
		
		$('pager').innerHTML = pager;


		// 位置情報取得	
		var markers = xmlDoc.documentElement.getElementsByTagName("marker");

		// 数あるだけ設定
		for (var i = 0; i < markers.length; i++) {

			// 座標取得ならびに世界測地系に変換
			var lat = parseFloat(markers[i].getAttribute("lat"));
			var lng = parseFloat(markers[i].getAttribute("lng"));
			var lat2 = chgWGS84Lat(lng, lat);
			var lng2 = chgWGS84Lng(lng, lat);
			var point = new GLatLng(lat2, lng2);

			// 名称など取得			
			var label = markers[i].getAttribute("label");
			var addr = markers[i].getAttribute("addr");
			var tel = markers[i].getAttribute("tel");
			
			var html =  '<div style="display: block;" class="itemframe">';
				html +=	'<span class="item_label">' + label + '</span><br/>';
				html +=	'<span class="item_addr">' + addr + '</span><br/>';
				html +=	'<span class="item_tel">' + tel + '</span><br/>';
				html +=	'</div>';
				
			htmls[i] = html;

			if ( ! isNaN(lat)){
				$('result').innerHTML += '<a href="javascript:myclick(' + i + ')">' + html + '</a>';

				// マーカー作成
				var marker = creMarker(point, html);
				map.addOverlay(marker);
				gmarkers[i] = marker;
				
			}else{
				$('result').innerHTML += html;
			}
			
		}
		
		//
		if(markers.length == 0){
			$('result').innerHTML = '<span style="font-weight:bold; font-size:small; color:orange;">プラモ屋はこれ以上ありませんでした。</span>'
		}
		
		// ZOOM
		map.setZoom(9);
		
	}
	
	// マーカー作成
	function creMarker(point, html) {
		var marker = new GMarker(point);
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(html);
		});
		return marker;
	}
	
	// WGS84(世界測地系)Lat変換
	function chgWGS84Lat(a,b){ 
		var y = b - b * 0.00010695 + a * 0.000017464 + 0.0046017; 
		return y;
	}

	// WGS84(世界測地系)Lng変換
	function chgWGS84Lng(a,b){ 
		var x = a - b * 0.000046038 - a * 0.000083043 + 0.010040; 
		return x;
	}

	// クリック処理 infoWindow表示
	function myclick(i) {
		map.setZoom(13);
		gmarkers[i].openInfoWindowHtml('<p>' + htmls[i] + '</p>');
	}

	// 都道府県選択時の処理
	function handleSelected(obj) { 
		
		// 該当の都道府県に移動
		if (obj.selectedIndex != 0) { 
			point = obj.options[obj.selectedIndex].value
			point = point.split(',')
			map.panTo(new GLatLng(point[2], point[1])); 
			map.setZoom(9);
		} 
		
		// 同時に該当の都道府県で検索
		searchWeb('', 1, class_selected_id);
	} 
	
	// 以前の検索結果をクリアする
	function removeResults(){
		// MAP上アイコン削除

//		for (i=0; i<gmarkers.length; i++) {
//			map.removeOverlay(gmarkers[i]);
//		}
map.clearOverlays();

		// パラメタクリア
        	gmarkers = [];
        	htmls = [];
        
        	// 検索結果クリア
		$('result').innerHTML = '';
		$('pager').innerHTML = '';
	}
	
		