// Title: Tablas Tigre
// Version: 1.0

function tables (
		tableId, // Id de la Tabla (Obligatorio)
		numIniRow, // Desde que fila comienza (Opcional)
		numFinRow, // Cuantas filas antes del final (Opcional)
		styleCursor, // Estilo del cursor al pasar por la fila (Opcional)
		oddColor, // Color de Fondo para el ODD (Opcional)
		evenColor, // Color de Fondo para el EVEN (Opcional)
		moveColor, // Color para el Over (Opcional)
		onclickColor // Color para marcar una fila (Opcional)
	) {

	// Valida parámetros requeridos
	if (!tableId)
		return alert ("No se especificó un ID de tabla");
	var objTable = (document.all ? document.all[tableId] : document.getElementById(tableId));
	if (!objTable)
		return alert ("No se encontró ninguna Tabla con este ID (" + tableId + ")");

	// Setea los parámetros opcionales
	var colConfig = [];
	colConfig.header_offset = (numIniRow ? numIniRow : 0);
	colConfig.footer_offset = (numFinRow ? numFinRow : 0);
	colConfig.cursor = (styleCursor ? styleCursor : 'default');
	colConfig.odd_color = (oddColor ? oddColor : '#ECF0F7');
	colConfig.even_color = (evenColor ? evenColor : '#F7F9FC');
	colConfig.mover_color = (moveColor ? moveColor : '#DAE4EF');
	colConfig.onclick_color = (onclickColor ? onclickColor : '#B7D2EC');
	
	// Inicializa múltiples tablas
	if (objTable.length)
		for (var i = 0; i < objTable.length; i++)
			tt_init_table(objTable[i], colConfig);
	// Inicializa una única tabla
	else
		tt_init_table(objTable, colConfig);
}

function tt_init_table (objTable, colConfig) {
	var col_lconfig = [],
		col_trs = objTable.rows;
	for (var i = colConfig.header_offset; i < col_trs.length - colConfig.footer_offset; i++) {
		col_trs[i].config = colConfig;
		col_trs[i].lconfig = col_lconfig;
		col_trs[i].set_color = tt_set_color;
		col_trs[i].onmouseover = tt_mover;
		col_trs[i].onmouseout = tt_mout;
		col_trs[i].onmousedown = tt_onclick;
		col_trs[i].order = (i - colConfig.header_offset) % 2;
		col_trs[i].onmouseout();
	}
}
function tt_set_color(str_color) {
	this.style.backgroundColor = str_color;
}

// event handlers
function tt_mover () {
	if (this.lconfig.clicked != this) {
		this.set_color(this.config.mover_color);
		this.style.cursor = this.config.cursor;
	}
}
function tt_mout () {
	if (this.lconfig.clicked != this)
		this.set_color(this.order ? this.config.odd_color : this.config.even_color);
}
function tt_onclick () {
	if (this.lconfig.clicked == this) {
		this.lconfig.clicked = null;
		this.onmouseover();
	}
	else {
		var last_clicked = this.lconfig.clicked;
		this.lconfig.clicked = this;
		if (last_clicked) 
			last_clicked.onmouseout();
		this.set_color(this.config.onclick_color);
	}
}

