var iconLayerClass = Class.create({
   initialize: function (name, initDisplay, objArray, domElement, classType){
      this.name = name;
      this.display = initDisplay;
      this.objArray = objArray;
      this.domElement = domElement;
      this.classType = classType;
      objArray.each(function (obj) { obj.createMarkers() });
   },
   
   update: function (newObj) {
     var foundObj = this.objArray.find( function (obj) {
        if (obj.id == newObj.id) {
           return obj;
        }
     }); 
     if(!foundObj) {
            var newClassObj = new this.classType(newObj);
            newClassObj.createMarkers();
            this.objArray.push(newClassObj);
     }
     else foundObj.update(newObj);
   },
  
   remove: function (removedObj) {
      var foundObj = this.objArray.find(function (obj) {
         if(obj.id == removedObj.id) {
             return obj;
         }
      });
      if(foundObj) {
         foundObj.remove();
         this.objArray.splice(this.objArray.indexOf(foundObj),1);
         delete(foundObj);
      }
   },

   determineDisplayState: function (zLevel) {
     if(!this.domElement || null == this.domElement){
         this.displayIcons(zLevel);
         this.display = true;
         return;
     }
     if(this.display && this.domElement.checked && zoomLevel == zLevel) return;
     if((!this.display && this.domElement.checked) || (this.display && this.domElement.checked && zoomLevel != zLevel)) {
         this.displayIcons(zLevel);
         this.display = true;
     } else if (this.display && !this.domElement.checked){
         this.hideIcons();
         this.display = false;
     }
   },
   
   hideIcons: function () {
      this.objArray.each( function (obj) {
         obj.markerSmall.hide();
         obj.markerMed.hide();
         obj.markerLarge.hide();
      });
   },

   displayIcons: function (zLevel) {
       if(zLevel == 1){
          this.objArray.each( function (obj) {
             obj.markerSmall.show();
             obj.markerMed.hide();
             obj.markerLarge.hide();
          });
       } else if (zLevel == 2){
          this.objArray.each( function (obj) {
             obj.markerSmall.hide();
             obj.markerMed.show();
             obj.markerLarge.hide();
          });
       } else if (zLevel == 3){
          this.objArray.each( function (obj) {
             obj.markerSmall.hide();
             obj.markerMed.hide();
             obj.markerLarge.show();
          });
       }
   }
});

