/* --JavaScript Collection Object-- */

function CCollection() {
/* --CCollection object-- */
     var lsize = 0;

     this.add = _add;
     this.remove = _remove;
     this.isEmpty = _isEmpty;
     this.size = _size;
     this.clear = _clear;
     this.clone = _clone;

     function _add(newItem) {
     /* --adds a new item to the collection-- */
          if (newItem == null) return;

          lsize++;
          this[(lsize - 1)] = newItem;
     }

     function _remove(index) {
     /* --removes the item at the specified index-- */
          if (index < 0 || index > this.length - 1) return;
          this[index] = null;

          /* --reindex collection-- */
          for (var i = index; i <= lsize; i++)
               this[i] = this[i + 1];

          lsize--;
     }

     function _isEmpty() { return lsize == 0 }     /* --returns boolean if collection is/isn't empty-- */

     function _size() { return lsize }     /* --returns the size of the collection-- */

     function _clear() {
     /* --clears the collection-- */
          for (var i = 0; i < lsize; i++)
               this[i] = null;

          lsize = 0;
     }

     function _clone() {
     /* --returns a copy of the collection-- */
          var c = new CCollection();

          for (var i = 0; i < lsize; i++)
               c.add(this[i]);

          return c;
     }
}