function TableManager() {
  this.setupEventHandlers();
}



// take a deep breath
TableManager.prototype.setupEventHandlers= function() {

  tableCollection = document.getElementsByTagName("TABLE");
	for (var i=0; i<tableCollection.length; i++) {

		var table = tableCollection[i];
		if (table.className.indexOf("clickable")!=-1) {

			var trCollection = table.getElementsByTagName("TR");
			for (var j=0; j<trCollection.length; j++) {
				
				var tr = trCollection[j];
				tr.onmouseover = function() {if (this.className!="selected") this.className = "over";}
				tr.onmouseout	 = function() {if (this.className!="selected") this.className = "";}
				
				//----<<
				tr.onclick = function(mozEvent) {
					var eventSource = getEventOriginator(mozEvent);
					if (eventSource.tagName!="INPUT") {
						var firstInput = (this.getElementsByTagName("INPUT"))[0];
						if (firstInput) firstInput.click();
					}
				}
				//---->>
				var inputCollection= tr.getElementsByTagName("INPUT");
				var firstInput = inputCollection[0];
				
				
				if ((firstInput)  && (firstInput.getAttribute("type")=="radio")) {

					//----<<
					firstInput.onclick= function() {
						var table = this.parentNode.parentNode.parentNode;
						
						var inputCollection = table.getElementsByTagName("INPUT");
						for (var i=0; i<inputCollection.length; i++) {
							var tr = inputCollection[i].parentNode.parentNode;
							if (tr.className=="selected") tr.className = ""
							
						}
						
						if (this.checked) {
							this.parentNode.parentNode.className="selected";

						}
						else {
							this.parentNode.parentNode.className="selected";

						}
					}
					//---->>
				}
				else if ((firstInput)  && (firstInput.getAttribute("type")=="checkbox")) {
					// stupid mozilla state-managing behaviour.
					if (firstInput.checked) firstInput.checked=false;
					//----<<
					firstInput.onclick= function() {
						var table = this.parentNode.parentNode.parentNode;
						
						var inputCollection = table.getElementsByTagName("INPUT");
						
						
						if (this.checked) {
							this.parentNode.parentNode.className="selected";

						}
						else {
							this.parentNode.parentNode.className="over";

						}
					}
					//---->>
				}
				
			}
		}
	}
}


