
//<![CDATA[

//文字コードが。。。

var map = null;
var geocoder = null;
var nowmaker = null;

var add_html ="";
var add_txt = "";

var map_x = 38.169;
var map_y = 139.516;
var now_x = 38.169;
var now_y = 139.516;
var now_zoom = 5;
var now_center = null;
var is_mark = false;

var now_rqid = "";

function onMapLoad() {
	if (document.getElementById("map"))mapload();
}

function onMapUnload(){
	if(map != null)GUnload();
}

function mapload() {

  if (GBrowserIsCompatible()) {
	map = new GMap2(document.getElementById("map"));

	map.addControl(new GLargeMapControl());
	map.addControl(new GScaleControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GOverviewMapControl());

	// GClientGeocoderを初期化
	geocoder = new GClientGeocoder();
	
	map.getPane(G_MAP_FLOAT_SHADOW_PANE).style.display="none";
/*	
    var myPano = new GStreetviewPanorama(document.getElementById("pano"));
    GEvent.addListener(myPano, "error", handleNoFlash);  
    svOverlay = new GStreetviewOverlay();
    map.addOverlay(svOverlay);
    GEvent.addListener(map,"click", function(overlay,latlng) {
      myPano.setLocationAndPOV(latlng);
    });
*/
	map_x = getXCookie();
	if(map_x==false)map_x = 139.516;//38.169;
	map_y = getYCookie();
	if(map_y==false)map_y = 38.169;//139.516;
	now_zoom = getZoomCookie();
	if(now_zoom==false){
		now_zoom = 5;
	}else{
		now_zoom = parseInt(now_zoom);
	}
	
/*
	add_txt = getNowAddressCookie();
	if(add_txt== false){
		add_txt = "";
	}else{
		add_txt = unescape(add_txt);
	}
	document.getElementById("address").value = add_txt;
*/
	
	setRequest();
	if(document.getElementById("address").value != ''){
		showAddress();
	}
	
	now_x = getNowXCookie();
	if(now_x==false)now_x = "";
	now_y = getNowYCookie();
	if(now_y==false)now_y = "";

	map.setCenter(new GLatLng(map_y, map_x), now_zoom);
	document.getElementById("map_x").value = map_x;
	document.getElementById("map_y").value = map_y;

	if(now_x && now_y){
		var tmppoint = new GLatLng(now_y, now_x);
		setMarker(tmppoint);
		document.getElementById("now_x").value = map_x;
		document.getElementById("now_y").value = map_y;
	}

	GEvent.addListener(map, 'moveend', function() {
		now_zoom = map.getZoom();
		now_center = map.getCenter();
		setCenterCookie(now_center.lng(),now_center.lat());
		map_x = now_center.lng();
		map_y = now_center.lat();
		setZoomCookie(now_zoom);
		document.getElementById("map_x").value = map_x;
		document.getElementById("map_y").value = map_y;
		if(is_mark == false){
			mapSearch();
		}else{
			is_mark = false;
		}
	});
	
	GEvent.addListener(map, 'zoomend', function(oldZoomLevel, newZoomLevel) {
		now_zoom = newZoomLevel;
		now_center = map.getCenter();
		setCenterCookie(now_center.lng(),now_center.lat());
		setZoomCookie(now_zoom);
		document.getElementById("map_x").value = map_x;
		document.getElementById("map_y").value = map_y;
		mapSearch();
	});

	mapSearch();

  }
}

function handleNoFlash(errorCode) {
  if (errorCode == FLASH_UNAVAILABLE) {
    alert("Error: Flash doesn't appear to be supported by your browser");
    return;
  }
}  
    
function setCenterCookie(x, y){
	//alert(x+","+y);
	document.cookie = "map_x=" + x + ";expires=1-Jan-2030 00:00:00 GMT";
	document.cookie = "map_y=" + y + ";expires=1-Jan-2030 00:00:00 GMT";
}
    
function setPosCookie(x, y){
	//alert(x+","+y);
	document.cookie = "now_x=" + x + ";expires=1-Jan-2030 00:00:00 GMT";
	document.cookie = "now_y=" + y + ";expires=1-Jan-2030 00:00:00 GMT";
}

function setZoomCookie(zoom){
	//alert(zoom);
	document.cookie = "map_zoom=" + zoom + ";expires=1-Jan-2030 00:00:00 GMT";
}

function setNowAddressCookie(address){
	//alert(address);
	document.cookie = "now_address=" + escape(address) + ";expires=1-Jan-2030 00:00:00 GMT";
}

function setCategoryCookie(category){
	//alert(category);
	document.cookie = "map_category=" + category + ";expires=1-Jan-2030 00:00:00 GMT";
}

function loadCookie(arg){ //argはデータ識別文字列
	if(arg){
		cookieData = document.cookie + ";" //文字列の最後に「;」を追加
		startPoint1 = cookieData.indexOf(arg);
		startPoint2 = cookieData.indexOf("=",startPoint1) + 1;
		endPoint = cookieData.indexOf(";",startPoint1);
		if(startPoint2 < endPoint && startPoint1 > -1){
			cookieData = cookieData.substring(startPoint2,endPoint);
			cookieData = cookieData;
			//alert(cookieData);
			return cookieData
		}
	}
	//alert("false");
	return false
}

function getXCookie(){
	return loadCookie("map_x");
}

function getYCookie(){
	return loadCookie("map_y");
}

function getNowXCookie(){
	return loadCookie("now_x");
}

function getNowYCookie(){
	return loadCookie("now_y");
}

function getNowAddressCookie(){
	return loadCookie("now_address");
}

function getZoomCookie(){
	return loadCookie("map_zoom");
}

function getCategoryCookie(){
	return loadCookie("map_category");
}
  
function removeAdd(){
	map.closeInfoWindow();
	map.removeOverlay(nowmaker);
	nowmaker = null;
}

function goPage(page_num){
	document.getElementById("now_page").value = page_num;
	mapSearch();
}

function mapSearch(){
	
	clearResult();
	
	var catstr = ""
    var el = getElementsById("ms_category[]");
    for ( var i=0; i < el.length; i++ ){
        if(el[i].checked == true){
        	catstr += "category[]=" + el[i].value + "&";
        }
    }
    
    var now_page = document.getElementById("now_page").value;

	var bounds = map.getBounds();
	var soutWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	
	now_rqid = Math.random();
	
	var parm =  catstr;
	parm += "top=" + soutWest.y;
	parm += "&bottom=" + northEast.y;
	parm += "&left=" + soutWest.x;
	parm += "&right=" + northEast.x;
	parm += "&rqid=" + now_rqid;
	parm += "&now_page=" + now_page;
	parm += "&keyword=" + document.getElementById("keyword").value;
	parm += "&address=" + document.getElementById("address").value;
	
	var url = "/mapsearch.php?" + parm;

	//document.getElementById("address").value =  url;

	//document.getElementById("debug").innerHTML = '<a href="' + url + '">url</a>';

	var request = GXmlHttp.create();
	request.open("GET", url, true);
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			//document.getElementById("searchresult").innerHTML =  request.responseText;
			showResult(request.responseXML);
		}
	}
	request.send(null);
}

function showResult(xmlDoc){
	var xml = XMLParser.parse(xmlDoc.documentElement);

	var rs_rqid = xml.path('result->rqid').value;
	//alert(now_rqid + "," + rs_rqid);
		
	if(now_rqid != rs_rqid)return;

	var result_total = xml.path('result->result_total');
	if(result_total)result_total = parseInt(result_total.value);

	var data_total = xml.path('result->data_total');
	if(data_total)data_total = parseInt(data_total.value);

	var total_page = xml.path('result->total_page');
	if(total_page)total_page = parseInt(total_page.value);

	var per_page = xml.path('result->per_page');
	if(per_page)per_page = parseInt(per_page.value);

	var now_page = xml.path('result->now_page');
	if(now_page)now_page = parseInt(now_page.value);

	var start_page = xml.path('result->start_page');
	if(start_page)start_page = parseInt(start_page.value);

	var end_page = xml.path('result->end_page');
	if(end_page)end_page = parseInt(end_page.value);
	
	doPages(result_total,total_page,now_page,start_page,end_page,per_page);

	if(data_total == 0){
		var tmpstr = "現在の地図表示範囲にクチコミ情報はありません。";
		document.getElementById("searchresult").innerHTML =  "<font color='#FF0000'>" + tmpstr + "</font>";
		return;
	}else{
		var tmpstr = " " + (((now_page - 1) * per_page) + 1) + " 件目から " + data_total + " 件のクチコミ情報が表示されてます。同じ位置に複数件が表示されている場合があります。<br />";
		document.getElementById("searchresult").innerHTML =   "<font color='#0000FF'>" + tmpstr + "</font>";
		s.pageName="【ウエディングマップ】-【周辺地図から探す】- 【検索結果表示】-【" + rs_rqid + "】";
		s.channel="【ウエディングマップ】"
		s.prop1="【ウエディングマップ】"
		var s_code=s.t();if(s_code)document.write(s_code);
		//if(navigator.appVersion.indexOf('MSIE')>=0)document.write(unescape('%3C')+'\!-'+'-');
	}

	var data_list = xml.path('result->data_list->data');
	if(data_list){
		if(data_total == 1){
			addMarker(data_list);
		}else{
			for (cnt = 0; cnt < data_list.length; cnt++){
				var data = data_list[cnt];
				addMarker(data);
			}
		}
	}
	
}

function doPages(total_num,total_page,now_page,start_page,end_page,per_page){
	//document.getElementById("debug").innerHTML = 'total_num:' + total_num + "/total_page:" + total_page + "/now_page:" + now_page + "/start_page:" + start_page + "/end_page:" + end_page + "/per_page:" + per_page;
	var output = '';

	output += '<ul><li class="total">Total:' + total_num + '</li>';

	if(now_page==1) {
		output += '<li class="pre2">&#171; 前のページ</li>';
	} else {
		i = now_page-1;
		output += '<li class="pre"><a href="javascript://" onclick="goPage(' + i + ')">&#171; 前のページ</a></li>';
	}

	if(start_page>1) {
		i = 1;
		output += '<li><a href="javascript://" onclick="goPage(' + i + ')">' + i + '</a></li>';
		output += '<li>...</li>';
	}
	
	for (i = start_page; i <= end_page && i <= total_page; i++) {
		if(i==now_page) {
			output += '<li class="current">' + i + '</li>';
		} else {
			output += '<li><a href="javascript://" onclick="goPage(' + i + ')">' + i + '</a></li>';
		}
	}
	
	if(total_page>end_page) {
		i = total_page;
		output += '<li>...</li>';
		output += '<li><a href="javascript://" onclick="goPage(' + i + ')">' + i + '</a></li>';
	}
	
	if(now_page<total_page) {
		i = now_page+1;
		output += '<li class="next"><a href="javascript://" onclick="goPage(' + i + ')"> 次のページ &#187;</a></li>';
	} else {
		output += '<li class="next2">次のページ &#187;</li>';
	}
	output += "</ul>\n";
	
	document.getElementById("top_pages").innerHTML =  output;
	document.getElementById("bottom_pages").innerHTML =  output;
}

function addMarker(data) {
	var img = data.path('image').value;
	if(img){
		img = '<img src="http://www.petxlife.com/modules/image_upload/plugins/thumb.php?img=' + 
			img + '&w=60&h=60" /><br /><br />';
	}else{
		img = '';
	}
	img = '';

	var icon = new GIcon();
	icon.image = "/icon/" + data.path('category').value + ".png";
	icon.iconSize = new GSize(40, 50);
	icon.iconAnchor = new GPoint(20, 50);
	icon.infoWindowAnchor = new GPoint(18, 10);
	
	var gmarkeroptions = new Object();
	gmarkeroptions.icon = icon;
	gmarkeroptions.clickable = true;
	gmarkeroptions.title = data.path('title').value + "(" + data.path('category_name').value + ")";

	var point = new GLatLng(data.path('y').value, data.path('x').value);
	var marker = new GMarker(point, gmarkeroptions);
	
	var sts = '';//'ステータス ： ' + data.path('status').value + '<br />';

	var html = '<div style="font-size:10px;"><b style="font-size:10px;">' +
		'<a target="_blank" href="' + data.path('url').value + '">' + data.path('title').value + 
		'</a></b><br />' + img + sts + 
		'カテゴリ ： ' +　data.path('category_name').value + '<br />' + 
		/*'評価数 ： ' + data.path('votes').value + ' ／ コメント数 ： ' + */
		/*data.path('comments').value + '<br />*/ '<a target="_blank" href="' +
		data.path('url').value + '">詳細表示 >></a></div>';

	//alert(html);
/*
	GEvent.addListener(marker, "mouseover", function() {
		is_mark = true;
    		marker.openInfoWindowHtml(html);
	});
*/
	GEvent.addListener(marker, "click", function() {
		is_mark = true;
    		marker.openInfoWindowHtml(html);
	});
	
	

	map.addOverlay(marker);
}

/*
function addMarker(lat, lon, html, icon_image, icon_shadow, title) {
	var icon = new GIcon();
	icon.image = "../img/common/" + icon_image;
	icon.shadow = "../img/common/" + icon_shadow;
	icon.iconSize = new GSize(20, 34);
	icon.shadowSize = new GSize(37, 34);
	icon.iconAnchor = new GPoint(6, 20);
	icon.infoWindowAnchor = new GPoint(5, 1);
	
	var gmarkeroptions = new Object();
	gmarkeroptions.icon = icon;
	gmarkeroptions.clickable = true;
	gmarkeroptions.title = title;

	var point = new GLatLng(lat, lon);
	var marker = new GMarker(point, gmarkeroptions);

	GEvent.addListener(marker, "click", function() {
    	marker.openInfoWindowHtml(html);
	});
	map.addOverlay(marker);
}
*/

function clearResult(){
	document.getElementById("searchresult").innerHTML = "<font color='#FF0000'>検索中。。。</font>";
	if(map)map.clearOverlays();
	if(nowmaker){
	 	map.addOverlay(nowmaker);
	}
}

function setMarker(point) {
	nowmaker = new GMarker(point);
	map.addOverlay(nowmaker);
}

// 「移動する」ボタンを押されると実行されます
function showAddress() {
  var address = document.getElementById('address').value;
  if(address == ""){
  	mapSearch();
  	return;
  }
  if (geocoder) {
    geocoder.getLatLng(
      address,
      function(point) {
        if (!point) {
          alert(address + " not found");
        } else {
			if(nowmaker == null){
				map.setCenter(point, 15);
				setMarker(point);
			}else{
	            map.setCenter(point, 15);
				nowmaker.setPoint(point);
			}

			setNowAddressCookie(address);
			setPosCookie(point.x, point.y);
			setCenterCookie(point.x, point.y);

			document.getElementById("map_x").value = point.x;
			document.getElementById("map_y").value = point.y;
			document.getElementById("now_x").value = point.x;
			document.getElementById("now_y").value = point.y;

			
        }
      }
    );
  }
}


//]]>

