// jq_table.js

//---------------------------------
$.fn.table = function(o)
	{
	var div = $(this);
	div.tableLoad(o, function(recs){
		div.tableCreate(o, recs);
		delete recs;
	});
	}
//---------------------------------
$.fn.tableCreate = function(o, recs)
	{
	var cols = o.sqlinfo.rtncols;
	var div = $(this).empty();
	var tab = $("<table></table>").addClass("bowersTable").appendTo(div);
	//tab.attr({cellspacing:1,cellpadding:1});
	var thead = $("<thead></thead>").appendTo(tab);
	var theadRow = $("<tr></tr>")
	.addClass("tableHeadRow")
	.appendTo(thead)
	for (var c=0;c<cols.length;++c)
		{
		$("<th class='tableHdg'>"+cols[c]+"</th>")
		.attr("c",c)
		.hoverClass("tableHdgOver")
		.bind("click",function(){
			var lastSort = o.sqlinfo.sort;
			o.sqlinfo.sort = $(this).attr("c");
			if (o.sqlinfo.sort==lastSort)
				{
				if (o.sqlinfo.desc) o.sqlinfo.desc = false;
				else o.sqlinfo.desc = true;
				}
			
			div.table(o);
		})
		.appendTo(theadRow);
		}
	var tbody = $("<tbody></tbody>").appendTo(tab);
	
	for (var i = 0; i < recs.length; ++i) 
		{
		var tr = $("<tr></tr>").addClass("tableRow").appendTo(tbody);
		var r = recs[i];
		for (var c = 0; c < cols.length; ++c) 
			{
			$("<td class='tableCell'>" + r[cols[c]] + "</td>").appendTo(tr);
			}
		}
	}

//---------------------------------
$.fn.tableLoad = function(o, done)
{
	var ext = " ORDER BY "+o.sqlinfo.rtncols[o.sqlinfo.sort];
	if (o.sqlinfo.desc == true) ext += " DESC";	

	$.post(o.php, {
		data: $.toJSON({
			command: "sql",
			sql: escape(o.sqlinfo.sql+ext),
			rtncols: js_arraytostring(o.sqlinfo.rtncols)
		})
	}, function(res)
	{
		var o = $.evalJSON(res);
		var recs = $.evalJSON(o.recs);
		done(recs);
	});
}