function TabSet() {
	// default settings
	this.settings = new Object();

	// Items is an array of Tab Objects
	this.items = new Array();

	// Add any mandatory creation functionality...
	this.create = function() {
		this.setup();
	}

	// Overridden on a Tabset by Tabset basis. Add tab items here.
	this.setup = function() { }

	this.addItem = function(tabId,contentId) {
		var image     = "";
		var imageOn   = "";
		var imageOver = "";
		var itemOn    = false;

		// Optional Arguments
		// ARG 3: Image
		if(arguments.length > 2) {
			image = arguments[2];
		}

		// ARG 4: Image On
		if(arguments.length > 3) {
			imageOn = arguments[3];
		} else {
			imageOn = image;
		}

		// ARG 5: Image Over
		if(arguments.length > 4) {
			imageOver = arguments[4];
		} else {
			imageOver = image;
		}

		// ARG 6: ON (true) or OFF (false)
		if(arguments.length > 5) {
			itemOn = arguments[5];
		}

		this.items.push(new TabItem(tabId,contentId,image,imageOn,imageOver,itemOn));
	}

	// Swap a tab layer.
	this.swap = function(id) {
		var x = 0;

		if(this.items.length == 0) {
			this.create();
		}

		if(this.items[id].on == false) {
			for(x = 0; x < this.items.length; x++) {
				if(x == id) {
					this.items[x].content.style.display = "";
					this.items[x].on                    = true;

					this.onTabSelect(x);
				} else {
					this.items[x].content.style.display = "none";
					this.items[x].on                    = false;

					this.onTabUnSelect(x);
				}
			}
		}
	}

	// EVENT: Override as Appropriate
	this.onTabSelect = function(id) {
		if(this.items.length == 0) {
			this.create();
		}

		if(this.items[id].image_on != "") {
			this.items[id].tab.src = this.items[id].image_on;
		}
	}

	this.onTabUnSelect = function(id) {
		if(this.items.length == 0) {
			this.create();
		}

		if(this.items[id].image != "") {
			this.items[id].tab.src = this.items[id].image;
		}
	}

	this.onTabOver = function(id) {
		if(this.items.length == 0) {
			this.create();
		}

		if(this.items[id].on == false && this.items[id].image_over != "") {
			this.items[id].tab.src = this.items[id].image_over;
		}
	}

	this.onTabOut = function(id) {
		if(this.items.length == 0) {
			this.create();
		}

		if(this.items[id].on == false && this.items[id].image != "") {
			this.items[id].tab.src = this.items[id].image;
		}
	}
}

function TabItem(tabId,contentId) {
	this.tab        = document.getElementById(tabId);
	this.content    = document.getElementById(contentId);
	this.image      = "";
	this.image_over = "";
	this.image_on   = "";
	this.on         = false;

	// Optional Arguments
	// ARG 3: Image
	if(arguments.length > 2) {
		this.image = arguments[2];
	}

	// ARG 4: Image On
	if(arguments.length > 3) {
		this.image_on = arguments[3];
	} else {
		this.image_on = this.image;
	}

	// ARG 5: Image Over
	if(arguments.length > 4) {
		this.image_over = arguments[4];
	} else {
		this.image_over = this.image;
	}

	// ARG 6: ON (true) or OFF (false)
	if(arguments.length > 5) {
		this.on = arguments[5];
	}
}

