var map = null;
var _charCode = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var center_lat = 0;
var center_lng = 0;

GMap2.prototype.wheelZoom = function(event) {
    if (event.cancelable)
      event.preventDefault();
    if ((event.detail || -event.wheelDelta) < 0){
      map.zoomIn();
    }else{
      map.zoomOut();
    }
    return false;
}

function geom_load() {
    if(typeof(GIcon) == 'undefined'){
	alert("GoogleMapの初期化が不完全です。この問題は、ブラウザのキャッシュを削除すると解決する可能性があります。");
	return;
    }	

    baseIcon = new GIcon();
    baseIcon.image = "images/range/0/range.png";
    baseIcon.iconSize = new GSize(40, 40);
    baseIcon.iconAnchor = new GPoint(20, 20);
    baseIcon.markerId = 0;

    var ua = navigator.userAgent;

      window.onresize = function() {
        var mapArea = document.getElementById("geom_map");
        if( ua.indexOf("MSIE") >= 0 ){
            mapArea.style.width  = "500px";
	}	    
        else{
            mapArea.style.width  = "500px";
	}

        mapArea.style.height = "350px";
        map.checkResize();
      } 


    if (GBrowserIsCompatible()) {
        var mapArea = document.getElementById("geom_map");

        if( ua.indexOf("MSIE") >= 0 ){
            mapArea.style.width  = "500px";
	}	    
        else{
            mapArea.style.width  = "500px";
	}
        mapArea.style.height = "350px";

        map = new GMap2(document.getElementById("geom_map"));
        map.setCenter(new GLatLng(center_lat, center_lng), zoom_level);
        map.addControl(new GLargeMapControl());
        controlObj = new GMapTypeControl();
        map.addControl( controlObj );

        GEvent.addListener(map, "dragend", function(){
            center_lat = (map.getCenter()).lat().toFixed(6);
            center_lng = (map.getCenter()).lng().toFixed(6);
            search();
        });

        GEvent.addListener(map, "dblclick", function(){
            center_lat = (map.getCenter()).lat().toFixed(6);
            center_lng = (map.getCenter()).lng().toFixed(6);
            search();
        });

        GEvent.addListener(map, "zoomend", function(){
            zoom_level = map.getZoom();
            search();
        });

        GEvent.addDomListener(map, "DOMMouseScroll", map.wheelZoom);
        GEvent.addDomListener(map, "mousewheel", map.wheelZoom);
    }
}

function search(){
    map.clearOverlays();
    $("inputError").innerHTML = "";

    var keyword = $("keyword").value;
    if( keyword == "" ){
        $("inputError").innerHTML = "キーワードを１つ入力してください。";
        return;
    }

    var southWest = map.getBounds().getSouthWest();
    var northEast = map.getBounds().getNorthEast();
    var boundBox = southWest.lng()+','+northEast.lat()+','+
	northEast.lng()+','+southWest.lat();
    var url = "/blogsearch/heatmap_curl.cgi";
    var params = new Array();

    params.push("kywd="+encodeURIComponent(keyword));
    params.push("box="+boundBox);
    new Ajax.Request( url, {
        method: "get",
        parameters: params.join("&"),
        onComplete: showHeatMap
    });
}

function showHeatMap(httpObj) {
    var data = eval("(" + httpObj.responseText + ")");

    if( data.results.length == 0 ){
        $("inputError").innerHTML = "このキーワードは見つかりませんでした";
        return;
    }

    var results = data.results;
    var maxIntensity = results[0].intensity;

    for (var i = 0; i < results.length, element = results[i] ; i++) {
            var icon = new GIcon(baseIcon);

            var markerCount =
            Math.floor(element.intensity/maxIntensity*10.0);
            if( markerCount < $("intensity").value ){continue;}
            var letter = _charCode.charAt( 10 - markerCount );
            icon.image = "/blogsearch/doc/images/range/0/range"+letter+".png";
            var point = new GLatLng(element.lat, element.lng);
            var marker = new GMarker( point,{icon: icon});
            marker.markerId = i;
            marker.letter = letter;
            map.addOverlay(marker);
        }
}


