var Map = Class.create();
Map.prototype = {
  
  initialize:function() {
    this.coords = SiteVars.modules.Maps.coords;
    this.map = SiteVars.modules.Maps.map;
    this.load();
  },
  
  addMarker:function(item) {
    
    item.ico = new GIcon(G_DEFAULT_ICON);
    
    item.ico.image = item.pin;
    item.ico.shadow = item.shadow;
    item.ico.iconSize = new GSize(item.pinWidth, item.pinHeight);
    item.ico.shadowSize = new GSize(item.shadowWidth, item.shadowHeight);
     
    item.markerOptions = { icon:item.ico };
    
    item.useOffset = (item.offset) ? new GSize(item.offset.x, item.offset.y) : null;
      
      
    
    item.point = new GLatLng(item.lat, item.lng);
    var self = this;
    
    if (item.lat != '' && item.lng != '') {

      item.marker = ('customMarker' in SiteVars.modules.Maps) ? new GMarker(item.point, item.markerOptions) : new GMarker(item.point) ;
      
      GEvent.addListener(item.marker, 'click', function(){
          self.map.openInfoWindowHtml(item.point, '<br/><a target="_blank" href="' + item.link + '">'+ unescape(item.label) + '</a>' + '<p>' + unescape(item.desc) + '</p>', {pixelOffset:item.useOffset});
      });          
      
      self.map.addOverlay(item.marker);
      
      //self.map.openInfoWindowHtml(item.point, '<br/><a href="' + item.link + '">'+ item.label + '</a>' + '<p>' + item.desc + '</p>', {pixelOffset:item.useOffset}); 
        
      //console.dir(self.map);
      
    } else if (item.address != '') {
      
      var geocoder = new GClientGeocoder();
      geocoder.getLatLng(
        item.address,
        function(pnt) {
          if (!pnt) {
            alert(item.address + " not found");
          } else {
      
            
              //var marker = new GMarker(pnt, markerOptions);
              //var marker = new GMarker(pnt);
              item.marker = ('customMarker' in SiteVars.modules.Maps) ? new GMarker(pnt, item.markerOptions) : new GMarker(pnt) ;
              
              GEvent.addListener(item.marker, 'click', function(){
                  self.map.openInfoWindowHtml(pnt, '<a target="_blank" href="' + item.link + '">'+ unescape(item.label) + '</a>' + '<p>' + unescape(item.desc) + '</p>', {pixelOffset:item.useOffset});
              });          
              
              self.map.addOverlay(item.marker);
              
          }
        }
      );
 
    } 

     
  },
  
  load:function(){
    // load up map vars
    var self = this;
    
    
    if(typeof this.coords.Points == 'undefined') {
      return; 
    }
    
    this.coords.Points.each(function(item) {
       //$('map-container').innerHTML += item.label + '<br/>';
       //console.log(item.pin);
       self.addMarker(item);
       
       
    });
  },
  
  windowLoad:function(){
    if (GBrowserIsCompatible()) {
      
      var map = new GMap2($('map'));
       
      if (SiteVars.modules.Maps.centerPoint.lat != '' && 
        SiteVars.modules.Maps.centerPoint.lng != '') {
        map.setCenter(new GLatLng(SiteVars.modules.Maps.centerPoint.lat, SiteVars.modules.Maps.centerPoint.lng),  SiteVars.modules.Maps.zoom);
      } else if (SiteVars.modules.Maps.centerPoint.Address != '') {
          var geocoder = new GClientGeocoder();
          
          geocoder.getLatLng(SiteVars.modules.Maps.centerPoint.Address, function(pnt) {
              if (!pnt) {
                // ignore gracefully 
              } else {
                
                map.setCenter(pnt,  SiteVars.modules.Maps.zoom);
              }
          });
          
      }
      
      
      
      SiteVars.modules.Maps.map = map;
      
      var objMap = new Map();
      if (SiteVars.modules.Maps.enableMapControls == 'true') {
        map.addControl(new GSmallMapControl());
      }
      if (SiteVars.modules.Maps.enableMapType == 'true') {
        map.addControl(new GMapTypeControl());
      }      
      
      //return(map);
    }
  }

}; //}}}


Event.observe(window, 'load', function() {
    //console.dir(Map);
    if(!SiteVars.modules.Maps.AjaxLoad==true){
      Map.prototype.windowLoad();
    }
});

Event.observe(window, 'unload', function() {
  GUnload();
});




