/* Home page */
/*
function togglePane(id, ids, attr) {
	document.getElementById(id).style.display = attr;
	if (null != ids) {
		for (var i = 0; i < ids.length; i++) {
			if (id != ids[i]) {
				document.getElementById(ids[i]).style.display = 'none';
			}
		}
	}
}
*/
function toggleItem(id, ids, classOn, classOff) {
	if (null != id) {
		var element = document.getElementById(id);
		if ((null != element) && (null != classOn)) {
			element.setAttribute('class', classOn);
			element.setAttribute('className', classOn);
		}
		if ((null != ids) && (null != classOff)) {
			for (var i = 0; i < ids.length; i++) {
				if (id != ids[i]) {
					var other = document.getElementById(ids[i]);
					if (null != other) {
						other.setAttribute('class', classOff);
						other.setAttribute('className', classOff);
					}
				}
			}
		}
	}
}

function setTabs(ids) {
    if ((null != ids) && (0 < ids.length)) {
		for (var i = 0; i < document.forms.length; i++) {
			for (var j = 0; j < document.forms[i].elements.length; j++) {
				document.forms[i].elements[j].tabIndex = -1;
			}
	    }
		for (var i = 0; i < ids.length; i++) {
			var element = document.getElementById(ids[i]);
			if (null != element) {
				try {
					element.tabIndex = i+1;
				} catch(e) {
				}
			}
		}
		try {
			document.getElementById(ids[0]).focus();
		} catch(e) {
		}
	}
}

function FormSelector(includeIds, itemId, tabIds) {
	this.itemId = itemId;

	this.includeIds = new Array();
	if (null != includeIds) {
		for (var i = 0; i < includeIds.length; i++) {
			if (null != includeIds[i]) {
				this.includeIds[this.includeIds.length] = includeIds[i];
			}
		}
	}

	this.tabIds = new Array();
	if (null != tabIds) {
		for (var i = 0; i < tabIds.length; i++) {
			if (null != tabIds[i]) {
				this.tabIds[this.tabIds.length] = tabIds[i];
			}
		}
	}
}

FormSelector.prototype.display = function(ids, attr) {
	if (null != attr) {
		for (var i = 0; i < this.includeIds.length; i++) {
			var element = document.getElementById(this.includeIds[i]);
			if (null != element) {
				element.style.display = attr;
			}
		}
	}
	if (null != ids) {
		for (var i = 0; i < ids.length; i++) {
			if (null != ids[i]) {
				var hide = true;
				for (var j = 0; j < this.includeIds.length; j++) {
					if (ids[i] == this.includeIds[j]) {
						hide = false;
						break;
					}
				}
				if (hide) {
					var element = document.getElementById(ids[i]);
					if (null != element) {
						element.style.display = 'none';
					}
				}
			}
		}
	}
}

function FormSelectorSet(selectors, onClass, offClass) {
	this.selectors = new Array();
	this.optionals = new Array();
	this.items = new Array();

	if (null != selectors) {
		for (var i = 0; i < selectors.length; i++) {
			if (null != selectors[i]) {
				this.selectors[this.selectors.length] = selectors[i];
				for (var k = 0; k < selectors[i].includeIds.length; k++) {
					var present = false;
					for (var j = 0; j < this.optionals.length; j++) {
						if (this.optionals[j] == selectors[i].includeIds[k]) {
							present = true;
						}
					}
					if (!present) {
						this.optionals[this.optionals.length] = selectors[i].includeIds[k];
					}		
				}

				if (null != selectors[i].itemId) {
					var present = false;
					for (var j = 0; j < this.items.length; j++) {
						if (this.items[j] == selectors[i].itemId) {
							present = true;
						}
					}
					if (!present) {
						this.items[this.items.length] = selectors[i].itemId;
					}
				}
			}
		}
	}

	if (0 < this.selectors.length) {
		this.selected = selectors[0];
	} else {
		this.selected = null;
	}
	
	this.onClass = onClass;
	this.offClass = offClass;
}

FormSelectorSet.prototype.select = function(itemId) {
	this.selected = null;
	if (null != itemId) {
		for (var i = 0; i < this.selectors.length; i++) {
			 if (itemId == this.selectors[i].itemId) {
			 	this.selected = this.selectors[i];
			 }
		}
	}
}

FormSelectorSet.prototype.display = function(itemId) {
	if (null == itemId) {
		if (null != this.selected) {
			this.selected.display(this.optionals, 'block');
			toggleItem(this.selected.itemId, this.items, this.onClass, this.offClass);
	 		setTabs(this.selected.tabIds);
		}
	} else {
		for (var i = 0; i < this.selectors.length; i++) {
			if (itemId == this.selectors[i].itemId) {
				this.selectors[i].display(this.optionals, 'block');
				toggleItem(this.selectors[i].itemId, this.items, this.onClass, this.offClass);
	 			setTabs(this.selectors[i].tabIds);
	 		}
		}
	}
}
