/*

	72mm Array Sorting Functions - Version 1.2
	
		09/12/2006 - created by Mark Delano (mark@72mm.com) (MPSD)
		09/13/2006 - updated with error code (MPSD)
		09/14/2006 - updated "include", added caseless sorting (MPSD)
*/

document.write('<script src="http://code.72mm.com/javascript/error/error_interface-current.js"></script>');

/* Allows number to be sorted with standard ascii sorting */

function asSortableInteger(x) {

	if (x.length > 30)
		warn("asSortableInteger() : Excessively Large Number");
		
	var tmp;
	for (var i = 0; i < 30 - x.length; i++)
		tmp = tmp + "0";
		
	return tmp + x;
}

/*	
	Sort your entire 2d array by one of the fields inside of it.
	
	To search by multiple fields, use array = sort2dArray(array, "year|make|model");
	To search by numeric fields, prefix the field name with a #
	So, you can do this:
		array = sort2dArray(array, "#category_id|#price|description");
	
	09/11/2006 (MPSD)
*/

function sort2dArray(list, sort_by, caseless) {
	
	{
		if (caseless == undefined) caseless = false;	
	}
	
	var sorted = new Array();
	var tmp = new Array();
	var fields;
	var id = 0;	
	
	for (var i = 0; i < list.length; i++) {			
		tmp[i] = "";
		
		fields = sort_by.split("|");
		for (var j = 0; j < fields.length; j++) {
			if (fields[j].substr(0, 1) == "#") {
				fields[j] = fields[j].substr(1);				
				tmp[i] = tmp[i] + asSortableInteger(list[i][fields[j]]);
			}
			else {
				if (caseless == false)
					tmp[i] = tmp[i] + list[i][fields[j]];
				else
					tmp[i] = tmp[i] + list[i][fields[j]].toUpperCase();
			}
		}			
		tmp[i] = tmp[i] + "#*#" + i;
	}
		
	tmp.sort();

	for (var i = 0; i < tmp.length; i++) {
		x = tmp[i].lastIndexOf("#*#");
		if (x > 0) {
			id = tmp[i].substr(x+3);
			for (var j = 0; j < list.length; j++) {
				if (id == j) {
					sorted[i] = list[j];
					found = 1;
				}
			}
		}
		
		if (sorted[i] == undefined) {
			sorted[i] = new Array();
			sorted[i]["_error"] = "SortListBy() Error - Thrashed Data";
			error("SortListBy() : Thrashed Data");
		}
	}
	
	return sorted;
}