// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

hd = new Image(); 
//hd.src = '/images/homeheader_logo.png'
hd.src = '/images/header_logo.png'
hd.src = '/images/header_right.png'
hd.src = '/images/header_bg.png'

var markerHash = {};
var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // sure, not elegant, but it works.
var map;
var currentFocus=false;


function map_init(lat, lng, zoom, no_drag) {
  if (GBrowserIsCompatible()) {
    map = new GMap2($('map'));
//    map.enableDoubleClickZoom();
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(lat, lng), zoom);
    listMarkers(false); // false = don't fetch new list or populate sidebar (first set loads with page)
    if (no_drag != true) {
        GEvent.addListener(map, 'dragend', function(){
            map.disableDragging();
            Element.update('restlist','<div id="processing"><img src="/images/indicator.gif" border="0"> You moved the map. Let\'s see if we can find some more restaurants...</div>');
            new Effect.Highlight('processing')
            map.clearOverlays();
            listMarkers(true);
            map.enableDragging();
        });
    }
  }
}

function small_map_init(lat, lng, zoom) {
  if (GBrowserIsCompatible()) {
    map = new GMap2($('map'));
    map.addControl(new GSmallMapControl());
    map.setCenter(new GLatLng(lat, lng), zoom);
    var icon = new GIcon();
    icon.image = '/images/fork-noletter.png';
    icon.shadow = '/images/fork-shadow.png';
    icon.iconSize = new GSize(21, 60);
    icon.shadowSize = new GSize(53, 60);
    icon.iconAnchor = new GPoint(5, 50);
    icon.infoWindowAnchor = new GPoint(14, 14);
    var marker = new GMarker(new GLatLng(lat, lng),icon);
//    GEvent.addListener(marker, 'click',
//            function() {
//                marker.showMapBlowup();
//            });
    map.addOverlay(marker);
  }
}

function addMarker(lat, lng, iconImage, description, id) {
    if(iconImage!='') {
      var icon = new GIcon();
      icon.image = iconImage;
      icon.shadow = '/images/fork-shadow.png';
      icon.iconSize = new GSize(21, 60);
      icon.shadowSize = new GSize(53, 60);
      icon.iconAnchor = new GPoint(5, 50);
      icon.infoWindowAnchor = new GPoint(14, 14);
      var marker = new GMarker(new GLatLng(lat, lng),icon);
    } else {
      var marker = new GMarker(new GLatLng(lat, lng));
    }
    if(description!='') {
        GEvent.addListener(marker, 'click',
            function() {
               marker.openInfoWindowHtml(description);
               focusSideBar(id);
            }
        );
    }
    map.addOverlay(marker);
    return marker;
}

function listMarkers(load_side_bar) {
    if(load_side_bar == true) {
      var ll = map.getCenter();
      var map_lat = ll.lat();
      var map_lng = ll.lng();
      var myAjax = new Ajax.Request( 'load_markers', 
		{ method: 'get',
		  parameters: ("lat="+map_lat+"&lng="+map_lng),
	      onComplete: function(request){
                        markers=eval( "(" + request.responseText + ")" );
                        load_markers(markers,true);
                        new Effect.Fade('processing');
                        map.enableDragging();
                      },
          onLoading: function(){ map.disableDragging(); }
	   }); // end of the new Ajax.Request() call
	 } else {  
	   load_markers(markers_json,false);
	 } 
}

function focusPoint(id){
  focusSideBar(id);
  markerHash[id].marker.openInfoWindowHtml(markerHash[id].address);
}

function focusSideBar(id){
  if (currentFocus) {
    Element.removeClassName("sidebar-item-"+currentFocus,"current");
  }
  Element.addClassName("sidebar-item-"+id,"current");
  currentFocus=id;
}
