//~~Author~~. John Call

//~~Email_Address~~. jcall@sark.com

//~~Script_Type~~. jscript

//~~Sub_Type~~. Misc

//~~Keywords~~. collection, array, object

//~~Comment~~.
//Provides a custom JScript collection object for developers.

//~~Script~~.
/* --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;
	}
}