// TableMagic
// version 1.0
// revised by RSe 21.5.2004
// uses dom: evt, cls
// tested: IE 5.0, IE 5.5, IE 6.0, Gecko/20030425, Gecko/20040206
// not working: Opera 5, Opera 6
// buggy: Opera 7

// Warning: works only with valid tables.
// Rows are defined only in thead, tbody or tfoot

function TableMagic(){
	// advanced table manipulations
	// uses dom: cls, evt
	var own = this;

	this.assignRows = function(table, rowClassArray) {
		// original function by fczbkk
		if (table && rowClassArray) {
			var tr = table.getElementsByTagName("tr");
			var counter = 0;
			for (var i = 0; i < tr.length; i++) {
				if (tr[i].parentNode.parentNode == table) {
					cls.add(tr[i],rowClassArray[counter]);
					counter = (++counter == rowClassArray.length) ? 0 : counter;
				}
			}
			return true;
		} else return false;
	}

	this.addRowCursor = function(table, cursorClass) {
		// assigns table row that is under mouse cursor
		var getTargetRow = function(e){
			e = evt.fix(e);
			var obj;
			if (e.currentTarget) obj = e.currentTarget;
			else {
				obj = e.target;
				while (obj.parentNode.parentNode != table)
					obj = obj.parentNode;
			}
			return obj;
		}

		var showCursor = function(e){
			var obj = getTargetRow(e);
			cls.add(obj, cursorClass);
		}

		var hideCursor = function(e){
			var obj = getTargetRow(e);
			cls.remove(obj, cursorClass);
		}

		if (table && cursorClass) {
			var r = table.getElementsByTagName("tr");
			for (var i = 0; i < r.length; i++) {
				if (r[i].parentNode.parentNode == table) {
					evt.add(r[i], "mouseover", showCursor);
					evt.add(r[i], "mouseout", hideCursor);
				}
			}
		}
	}
}
var tableMagic = new TableMagic();


