    function load() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        var geo = new GClientGeocoder();
      }
    }

    function callGetLatLng(address, sort_table) {
      geo.getLatLng(address, function(point) {
        my_point = point;
        var rows = $('tbody > tr', sort_table);
        rows.each(function( index, row ) {
          var cell = $('td', row)[0];
          var vars = $('input', cell);
          var lat = vars[0];
          var lng = vars[1];
          var spans = $('span', cell);
          var distance = spans[0];
          var mi = spans[1];
          $(distance).css('display','inline');
          if(lat){ //I don't know why but sometimes lat is undefined
            var event_distance = parseInt(get_distance(lat.value, lng.value, point.lat(), point.lng()));
            if(isNaN(event_distance)){
              $(distance).css('display','none');
              $(mi).css('display','none');
              $(distance).text("999");
            }
            else {
              $(distance).css('display','inline');
              $(mi).css('display','inline');
              $(distance).text(""+event_distance);
            }
          }
        });
        $('#miles').removeClass('sortAsc'); //Force the sort table to sort ascending
        $('#miles').click();
      });
    }

    
  var geo = new GClientGeocoder();


  Number.prototype.toRad = function() {  // convert degrees to radians
    return this * Math.PI / 180;
  }

  get_distance = function(lat1, lon1, lat2, lon2) {
    var R = 3959; // earth's mean radius in km
    var dLat = (lat2-lat1)* Math.PI / 180;
    var dLon = (lon2-lon1)* Math.PI / 180;
    lat1 = lat1* Math.PI / 180;
    lat2 = lat2* Math.PI / 180;

    var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.cos(lat1) * Math.cos(lat2) *
            Math.sin(dLon/2) * Math.sin(dLon/2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    var d = R * c;
    return d;
  }


  $(document).ready(function() {
    $('#event_list_table').jTPS();
    var sort_table = $('#event_list_table')
    var errorbox = $('#errors')

    var type_select = $('#type_select');
    type_select.val('all');

    filter_list = function(){
      var rows = $('#event_list_table > tbody > tr');
      var val = "et"+type_select.val();
      rows.each(function( row_index, row ) {
        if (val=="etall" || $(this).hasClass(val)) { $(this).show(); }
        else                                       { $(this).hide(); }
      });
    }

    type_select.bind('change', filter_list);


    var address = $('#address_textbox');
    address.bind( 'change', function(evt){
      callGetLatLng(address.val(), sort_table);
    });
  } );

