var _baseUri='';
var geocoder = new GClientGeocoder();

if(typeof baseUri!='undefined'){
	_baseUri=baseUri;
}

var map = null;
var origCenter = null;
var	origNE=null;
var _what='';

function initMap(){
	map=new GMap2(document.getElementById("map_canvas"));
	map.addControl(new GSmallMapControl());
}

function showMap(lat,long) {
	if (GBrowserIsCompatible()) {
		initMap();
		map.setCenter(new GLatLng(lat,long), 13);		
		var bounds = map.getBounds();
		origCenter = bounds.getCenter();
		origNE = bounds.getNorthEast();
		
		GEvent.addListener(map, "moveend", function() {
			if (!map.getInfoWindow().isHidden())
			  return;
  			var center = map.getCenter();
  			var bounds = map.getBounds();
			var sw = bounds.getSouthWest();
			var ne = bounds.getNorthEast();  			
  			var newCenter = bounds.getCenter();
  			if (origCenter !=null && (Math.abs(origCenter.lat()-newCenter.lat()) > .01 || Math.abs(origCenter.lng() - newCenter.lng()) > .01)){
  				refreshRestaurants(sw.lat(),sw.lng(),ne.lat(),ne.lng());
  				origCenter = bounds.getCenter();
				origNE = bounds.getNorthEast();
  			}
		});
		
		GEvent.addListener(map, "zoomend", function(oldLevel,newLevel) {
			if (!map.getInfoWindow().isHidden())
			  return;
  			var center = map.getCenter();
  			var bounds = map.getBounds();
			var sw = bounds.getSouthWest();
			var ne = bounds.getNorthEast();  			
  			var newCenter = bounds.getCenter();
  			//if (origCenter !=null && (Math.abs(origCenter.lat()-newCenter.lat()) > .01 || Math.abs(origCenter.lng() - newCenter.lng()) > .01)){
  				refreshRestaurants(sw.lat(),sw.lng(),ne.lat(),ne.lng());
  				origCenter = bounds.getCenter();
				origNE = bounds.getNorthEast();
  			//}
		});
		
	}
}

function setCenter(lat,long){
	if(map!=null)
		map.setCenter(new GLatLng(lat,long), 13);
}

function applyFilter(what,where){
	_what=what;
	if(where=='Current view area'){
		refreshMap();
	}else{
		geocoder.getLatLng(
	    where,
	    function(point) {
	      if (!point) {
	        alert(address + " not found");
	      } else {
	        map.setCenter(point, 13);
	        var marker = new GMarker(point);
	        map.addOverlay(marker);
	       	marker.openInfoWindowHtml(where);
	       	refreshMap();
	      }
	    }
	  );
		
	}		
}

function refreshRestaurants(swLat,swLong,neLat,neLong){
	map.clearOverlays();
	$('rlist').innerHTML='Refreshing list...';
	updateInnerHTML(_baseUri+'/includes/dineFinderData.jsp?swlat='+swLat+'&swlong='+swLong+'&nelat='+neLat+'&nelong='+neLong+'&what='+_what,'rlist');
}

var tabOptions = { maxWidth:500};

function createMarker(div,point,markerOptions,html) {
        var marker = new GMarker(point,markerOptions);
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        
        GEvent.addDomListener($(div), "mouseover", function() {
          marker.openInfoWindowHtml(html);
        });
        return marker;
}

function refreshMap(){
	var center = map.getCenter();
	var bounds = map.getBounds();
	var sw = bounds.getSouthWest();
	var ne = bounds.getNorthEast();
	refreshRestaurants(sw.lat(),sw.lng(),ne.lat(),ne.lng());
}