Whaddado.Map = {
    map : {},
    mapPlaceholder : '',
    displyOnlyCurrentPoints : false,
    getIcon : function()
    {
         var baseIcon = new GIcon();
         baseIcon.iconSize=new GSize(32,32);
         baseIcon.shadowSize=new GSize(56,32);
         baseIcon.iconAnchor=new GPoint(16,32);
         baseIcon.infoWindowAnchor=new GPoint(16,0);

         var event_icon = new GIcon(baseIcon, Whaddado.base_url+ "public/img/event/w.png", null, Whaddado.base_url+"public/img/event/w_shadow.png");
         return event_icon;
    },
    init : function()
    {
        if ($("#"+Whaddado.Map.mapPlaceholder).length!=0)
        {
             map = new google.maps.Map2(document.getElementById(Whaddado.Map.mapPlaceholder));

             map.addControl(new GSmallMapControl());
             map.addControl(new GMapTypeControl());

             var event_icon = Whaddado.Map.getIcon();
             var bounds = new GLatLngBounds();
             for (index in Whaddado.Map.arPoints )
             {
                 var infoPoint = Whaddado.Map.arPoints[index];
                 var lat = infoPoint.lat;
                 var lon = infoPoint.lon;

                 var point = new GLatLng(lat,lon);
                 var marker = new GMarker(point,event_icon);
                 marker.bindInfoWindowHtml( Whaddado.Map.generateHtml(infoPoint) );
                 map.addOverlay(marker);
                 bounds.extend(point);
             }

             map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));

             //bind events to the map
             if (Whaddado.Map.displyOnlyCurrentPoints == false) {
                 GEvent.addListener(map, "moveend", function(evt) {

                     var bounds = map.getBounds();
                     var sw = bounds.getSouthWest();
                     var ne = bounds.getNorthEast();

                     // get the ids of the events that were allready added
                     var eventIdsAdded = new Array();
                     for (key in Whaddado.Map.arPoints)
                     {
                          eventIdsAdded.push(Whaddado.Map.arPoints[key].id);
                     }

                     var postData =  { 'sw_lat' : sw.lat() ,
                                       'sw_lon' : sw.lng() ,
                                       'ne_lat' : ne.lat() ,
                                       'ne_lon' : ne.lng() ,
                                       'eventIdsAdded' : eventIdsAdded.join(',')
                                    };
                      $.ajax({
                           type :  "POST",
                           url  :  Whaddado.base_url+'welcome/add_markers_for_bound',
                           data : postData,
                           dataType : "json",
                           success  : Whaddado.Map.addNewMarkers
                     });

                });
            }
        }

    },
    generateHtml : function(infoPoint)
    {
        return  '<a href="'+infoPoint.url+'">'+infoPoint.title+'</a>';
    },
    addNewMarkers : function(jsonResponse)
    {
         var event_icon = Whaddado.Map.getIcon();
         for (index in jsonResponse )
         {
            
             var infoPoint = jsonResponse[index];

             // check to see if it is not allready added
             if (!Whaddado.Map.isAllreadyAdded(infoPoint.id))
             {
                 var lat = infoPoint.lat;
                 var lon = infoPoint.lon;

                 var point = new GLatLng(lat,lon);
                 var marker = new GMarker(point,event_icon);
                 marker.bindInfoWindowHtml( Whaddado.Map.generateHtml(infoPoint) );
                 map.addOverlay(marker);

                 Whaddado.Map.arPoints.push(infoPoint);
             }
             
         }
    },
    isAllreadyAdded : function(eventId)
    {    
       for (key in Whaddado.Map.arPoints)
       {
          var allreadyAddedId = Whaddado.Map.arPoints[key].id
          if (eventId ==allreadyAddedId)
          {
              return true;
          }
       }       
       return false;
    }

}

 GEvent.addDomListener( window, 'load', Whaddado.Map.init );

