// Scenepeek Google Maps Wrapper v1.0
// For use on Scenepeek Website Only
//
// Notes:
// Zoom 0 - 19 (0 = far out, 19 = zoomed in)

function spmap_markers(map_obj, options) {
  this.obj_name = 'mapmarker';
  
  // Base Objects
  this.map_obj = map_obj;
  this.options = options || { };
  
  this.marker_groups = new sphash();
  
}

spmap_markers.prototype.iden = function() {
  alert(this.obj_name);
}

spmap_markers.prototype.has_marker_group = function(name) {
  if(this.marker_groups.exist(name))
    return true;
  return false;
}

spmap_markers.prototype.add_marker_group = function(name) {
  if(this.has_marker_group(name))
    return false;
  this.marker_groups.set(name, new sphash());
}

spmap_markers.prototype.remove_marker_group = function(name) {
  if(!this.has_marker_group(name))
    return false;
  this.marker_groups.remove(name);
}

spmap_markers.prototype.add_marker = function(group_name, sp_marker) {
  if(!this.marker_groups.exist(group_name))
    return false;
  hash = this.marker_groups.get(group_name);
  hash.set(sp_marker.id, sp_marker);
}

spmap_markers.prototype.hide_marker_group = function(group_name) {
  if(!this.marker_groups.exist(group_name)) {
    alert('unknown group ' + group_name);
    return false;
  }
  
  hash = this.marker_groups.get(group_name);
  keys = hash.keys();
  num = hash.size();
  for(var i=0;i<num;i++) {
    marker = hash.get(keys[i]);
    this.map_obj.remove_marker(marker.id);
  }
}

spmap_markers.prototype.show_marker_group = function(group_name) {
  if(!this.marker_groups.exist(group_name)) {
    alert('unknown group ' + group_name);
    return false;
  }
  
  hash = this.marker_groups.get(group_name);
  keys = hash.keys();
  num = hash.size();
  for(var i=0;i<num;i++) {
    marker = hash.get(keys[i]);
    this.map_obj.add_marker(marker);
  }
}

spmap_markers.prototype.goto_marker = function(group_name, id) {
  if(!this.has_marker_group(group_name)) {
    alert('no group: ' + group_name);
    return;
  }
    
  hash = this.marker_groups.get(group_name);
  marker = hash.get(id);
  this.map_obj.goto_marker(marker.id);
}
