var ALPHDIR = 'asc';
var PREVCOL = -1;
var tableID = 'order_table';

function reorder_table() {
	var table = document.getElementById(tableID);
	var n;
	if (table) {	// make sure this exists
		for(n=0;n<=(table.getElementsByTagName("TH").length-1);n++) {
			eval('var th'+n+' = table.getElementsByTagName("TH")[n];');
		  try {
		    eval('clickEvent = th'+n+'.getAttributeNode("onmousedown");');
		  } catch(e) { }
		  
  		eval('th'+n+'.onmousedown = function() { redraw_table('+n+', table); }');
		}
	}
}

function redraw_table(col, table) {
	var trs = new Array(0);
	var order = new Array(0);
	var neworder = new Array(0);
	var newswaporder = new Array(0);
	var originalorder = new Array(0);
	var tbody = table.getElementsByTagName("TBODY")[0];
	var maxtr = table.getElementsByTagName("TR").length;
	var origswapordr = new Array(0);
	
	for(n=1;n<=(maxtr-1);n++) {
		trs[n] = table.getElementsByTagName("TR")[n].innerHTML;
		order[n] = table.getElementsByTagName("TR")[n].getElementsByTagName("TD");
	}
	for(n=1;n<=(order.length-1);n++) {
		var orderarray = order[n];
		neworder[n] = orderarray[col].innerHTML+n;
		originalorder[n] = orderarray[col].innerHTML+n;
	}
	
	// use php script to order stuff
	var arrayasstring = '';
	for(n=1;n<=(originalorder.length-1);n++) {
		if (n>1) {
			arrayasstring += ",";
		}
		arrayasstring += originalorder[n];
	}
	for(n=1;n<=(originalorder.length-1);n++) {
		origswapordr[originalorder[n]] = n;
	}
	
	if (PREVCOL==col) {
		if (ALPHDIR=='asc') {
			ALPHDIR = 'desc';
		} else {
			ALPHDIR = 'asc';
		}
	} else {
		ALPHDIR = 'asc';
	}
	
	neworder.sort(alphabetical);
	PREVCOL = col;
	
	// swap neworder to have n as key and store in new array
	for(n=1;n<=(neworder.length);n++) {
		newswaporder[originalorder[n]] = origswapordr[neworder[n-1]];
	}
	// remove the current rows
	for(n=1;n<(trs.length);n++) {
		table.deleteRow(1);
	}
	
	// put the trs back in order
	for(n=1;n<(trs.length);n++) {
		var newTR = document.createElement('TR');
		var tmpTR = tbody.appendChild(newTR);
		
		try {
			tmpTR.innerHTML = trs[newswaporder[originalorder[n]]];
		} catch(e) {
			var TDarray = trs[newswaporder[originalorder[n]]].split("<TD>");
			for(k=1;k<=(TDarray.length-1);k++) {
				var newTD = document.createElement('TD');
				newTR.appendChild(newTD);
				tbody.appendChild(newTR);
				newTD.innerHTML = TDarray[k].replace(/<\/td>/i, "");
			}
		}
	}
}

function alphabetical(a, b) {
	if (ALPHDIR=='asc') {
		var A = a.toLowerCase();
		var B = b.toLowerCase();
	} else {
		var A = b.toLowerCase();
		var B = a.toLowerCase();
	}
	if (A < B) {
		return -1;
	} else if (A > B) {
		return 1;
	} else {
		return 0;
	}
}

window.onload = function() {
	reorder_table();
}
