/*
Circle Generation Code learnt from http://esa.ilmari.googlepages.com/circle.htm
*/

var mapInitialized = false;
var distance    = 0.02;
var center;
var map;
var bounds;
var heatMap;
var lat;
var lng;


function setCentre(lat, lng, zoom) {
    center = new GLatLng(lat, lng);
    if (mapInitialized){
        map.setCenter(center);
        map.setZoom(zoom);
    }   
    return;
}
 
function mapLoad(lat, lng, zoomLevel) {
    map = new GMap2(document.getElementById("price-guide-map"));
    mapInitialized = true;
    setCentre(lat, lng, zoomLevel);
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.enableDoubleClickZoom();
    GEvent.addListener(map, "dragstart", function(){map.clearOverlays();});
    GEvent.addListener(map, "dragend", moveMap);
    GEvent.addListener(map, "zoomend", zoomEnd);
    map.savePosition();
    moveMap();
    return true;
}


var type;
    
function moveMap(){
    type = "given_coords";
    center = map.getCenter();
    $("#latitude").val(center.lat());
    $("#longitude").val(center.lng());
    $("#zoomLevel").val(map.getZoom());
    
    getData();
    return true;
   }

function zoomEnd(){
   $("#zoomLevel").val(map.getZoom());
    moveMap();
}

   
function getData(){        
            $.ajax({
                  type: "POST",
                  url: "/index.php?com=tools&option=price-guide-response&"+type+"=1&xml=1",
                  dataType: "json",
                  data: {'q': $("#locations").val(), 
                        'length': $("#length_of_stay").val(), 
                        'lat': $("#latitude").val(),
                        'lon': $("#longitude").val(),
                        'zoom': $("#zoomLevel").val()},
                  success: function(msg){
                    processJSON(msg);
                    processMap();  
                  }
            });
            return true;
}

function processMap(){
    if (type!="given_coords"){
        setCentre($("#latitude").val(),$("#longitude").val(), map.getZoom());
    }


drawSquare();
  
}

function drawSquare(){
    map.clearOverlays();
    distance = $("#distance").val()*1;
    lat = center.lat()*1;
    lng = center.lng()*1;
    
var polygon = new GPolygon([
    new GLatLng(lat + 0.5*distance, lng + distance),
    new GLatLng(lat + 0.5*distance, lng - distance),
    new GLatLng(lat - 0.5*distance, lng - distance),
    new GLatLng(lat - 0.5*distance, lng + distance),
    new GLatLng(lat + 0.5*distance, lng + distance)
  ], "#3172a8", 1, 1, "#3172a8", 0.2);
  
    map.addOverlay(polygon);
    
    return;
    }


$(document).ready(function() {

    $("#locations").click(function(){
        $(this).select();
    });
    
    $("#process").click(function(){
        type="location";
        getData();
        return true;
    });

    mapLoad($("#latitude").val(), $("#longitude").val(), 13);
});


$(document).unload( function () { 
    GUnload();
});

