$(function(){
  var $ip  = $("#ip");
  var $id  = $("#id");
  var $search = $("#ip_search");
  var map;

  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(14,-17), 2); //start roughly in Dakar, Africa
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
  }

  var modifyMap = function(data) {
    var loc = new GLatLng(data.lat,data.lon);
    var text = "<u>" + data.ip + "</u><br/>" +data.isp + "<br/>" + data.city + ", " + data.region + "<br/>" + data.country;
    var marker = new GMarker(loc, { title: data.ip });
    map.panTo(loc);
    map.addOverlay(marker);
    GEvent.addListener(marker, "click", function() {
      marker.openInfoWindowHtml(text);
    });

    map.openInfoWindowHtml(loc, text);
    $ip.css({ background:"#FFF" }).attr("value","").focus();
  }

  $ip.focus();

  $ip.keyup(function() {
    var bgcolor = $ip.val().match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) ? "#BFFF94" : "#FFF";
    $ip.css("background", bgcolor);
  });

  $("#your_ip").click(function() {
    $ip.attr("value", $(this).html());
    $search.submit();
  });

  $search.submit(function() {
    $.post("/lookup", {ip: $ip.val(), id: $id.val()}, function(data) {
      modifyMap(JSON.parse(data));
    });
    return false;
  });
});

