// MMarkerRegistry implementation

var MMarkerRegistry = new Object();
MMarkerRegistry.markers = new Array();

MMarkerRegistry.addObject = function (latLng, rating, id, fire, categories)
{
  if (!rating) rating = 'UNRATED';
  
  var markerZoomedOut = new GMMarker(latLng, GMIconsRegistry.getIcon(rating, false));        
  MMap.addOverlay(markerZoomedOut);
  markerZoomedOut.id = id;
  markerZoomedOut.type = 'out';
  
  GEvent.addListener(markerZoomedOut, 'click', MMarker.click);
  
  for (var i in categories)
  {
      var catId = categories[i];
      
      markerZoomedOut['cat' + catId] = 1;
  }

  this.markers.push(markerZoomedOut);
  
  if (this.defaultObjectId && id == this.defaultObjectId)
  {
      fire = function () {
      
      };
  }
  
  if (fire)
  {
      GEvent.trigger(markerZoomedOut, 'click', fire);
  }
  
  return markerZoomedOut;
}

MMarkerRegistry.hide = function ()
{
  for (i in this.markers)
  {
      this.markers[i].hide();
  }
}

MMarkerRegistry.load = function ()
{
  GDownloadUrl(
  
    '/retreivers/objects.php?guideId=' + this.guideId + rnd(),
    this.loadCallBack
  );
}

MMarkerRegistry.loadCallBack = function (jsCode, httpCode)
{
  var geoObjects = eval(jsCode);
  
  for (var i in geoObjects)
  {
      MMarkerRegistry.addObject(
      
        new GLatLng(geoObjects[i].lat, geoObjects[i].lng),
        geoObjects[i].rating,
        geoObjects[i].id,
        '',
        geoObjects[i].categories
      );
  }

  changeMarkers(null, MMap.getZoom());
  
  top.document.getElementById('showDuringLoad').style.display = 'none';
  top.document.getElementById('showAfterLoad').style.display = 'block';
  
  GEvent.trigger(MMarkerRegistry, 'load');
}

MMarkerRegistry.setDefaultObject = function (id)
{
  this.defaultObjectId = id;
}

MMarkerRegistry.setGuide = function (id)
{
  this.guideId = id;
}

MMarkerRegistry.show = function ()
{
  for (i in this.markers)
  {
      this.markers[i].show();
  }
}

MMarkerRegistry.goToId = function (id, noZoom)
{
  if (noZoom != true) MMap.setZoom(15);
  
  for (i in this.markers)
  {
      if (this.markers[i].id == id)
      {
          GEvent.trigger(this.markers[i], 'click', function () {} );          
      }
  }
}
