// object declarations
function EventArray() {
	this.EventArray = new Array();
	this.Add = _AddEvent;
	this.Delete = _DeleteEvent;
	this.Count = _EventCount;
	this.Item = _ReturnEvent;
	this.AttachEvents = _AttachEvents;
	
	function _AddEvent(objEvent) {
		this.EventArray[this.EventArray.length] = objEvent;
	}
	
	function _DeleteEvent(varIndex) {
		if (this.EventArray.length == 0) {
			alert ("There are no objects in this collection.");
			return;
		}
		var varNewEventArray = new Array();
		var varCounter = 0;
		for (i = 0; i < varIndex; i++) {
			varNewEventArray[varCounter] = this.EventArray[i];
			varCounter += 1;
		}
		for (i = varIndex + 1; i < this.EventArray.length; i++) {
			varNewEventArray[varCounter] = this.EventArray[i];
			varCounter += 1;
		}
		this.EventArray = varNewEventArray;
	}
	
	function _EventCount() {
		return this.EventArray.length;
	}
	
	function _ReturnEvent(varIndex) {
		if (varIndex > (this.EventArray.length - 1)) {
			alert ("The requested object does not exist in the collection.");
			return;
		}
		return this.EventArray[varIndex];
	}
	
	function _AttachEvents() {
		try {
			for (i = 0; i < this.EventArray.length; i++) {
				_AttachEventByElement(this.EventArray[i].Element, this.EventArray[i].Event, this.EventArray[i].Function);
			}
		}
		catch (e) {
			//alert ("function AttachEvents : " + e.message);
		}
	}
	
	function _AttachEventByElement(varElement, varEvent, varFunction) {
		try {
			if (ReturnIE()) {
	            document.getElementById(varElement).detachEvent("on" + varEvent, varFunction);
				document.getElementById(varElement).attachEvent("on" + varEvent, varFunction);
			}
			else {
			    document.getElementById(varElement).removeEventListener(varEvent, varFunction, false);
				document.getElementById(varElement).addEventListener(varEvent, varFunction, false);
			}
			//alert (varElement + " attached");
		}
		catch (e) {
			//alert ("function AttachEventByElement : " + e.message);
		}
	}
}

function EventDetail(varID, varTagName, varType, varInnerText, varDisabled) {
	this.ID = varID;
	this.TagName = varTagName;
	if (varType != null) {
		this.Type = varType.toUpperCase();
	}
	this.InnerText = varInnerText;
	if ((varDisabled == undefined) || (varDisabled == null)) {
		this.Disabled = false;
	}
	else {
		this.Disabled = varDisabled;
	}
}

function Event(varElement, varEvent, varFunction) {
	this.Element = varElement;
	this.Event = varEvent;
	this.Function = varFunction;
}

// utility functionality
function ReturnIE() {
	var varBrowser = navigator.appName + " " + navigator.appVersion;
	var varIE = false;
	if (varBrowser.substring(0, 9) == "Microsoft") {
		return (true);
	}
	else {
		return (false);
	}
}

function CancelEvent(evt) {
	if (evt != null) {
		if (evt.preventDefault) {
			evt.preventDefault();
		}
		evt.returnValue = false;
	}
	else {
		return (false);
	}
}

function ReturnEventDetail(evt) {
	var varType = null;
	if (ReturnIE()) {
		var varSrcElement = window.event.srcElement;
		if (varSrcElement.type) {
			varType = varSrcElement.type;
		}
		return new EventDetail(varSrcElement.id, varSrcElement.tagName, varType, varSrcElement.innerText, varSrcElement.disabled);
	}
	else {
		var varSrcElement = evt.target;
		if (varSrcElement.type) {
			varType = varSrcElement.type;
		}
		return new EventDetail(varSrcElement.id, varSrcElement.tagName, varType, varSrcElement.text, varSrcElement.disabled);
	}
}

function SubmitKey(evt) {
	if (event.keyCode == 13) {
		return CancelEvent(evt);
	}
	return (true);
}
