<!-- ----------------------------------------------------------------------------------
//
// Description:	Sorts and array of objects.
//
//--------------------------------------------------------------------------------- -->


//-------------------------------------------------------------------------------------
// Module level variables.
//-------------------------------------------------------------------------------------
var msSortProperty		= "";
var mbSortDescending	= false;

//-------------------------------------------------------------------------------------
// Function:	BuildSortFunction
//
// Synopsis:	Builds string that contains the block of JScript code to be executed when
//				sort function is called.
//
// Arguments:	none
//
// Returns:		Block of JScript code.
//
// Notes:		none
//
//-------------------------------------------------------------------------------------
function BuildSortFunction() {

	var s;

	if(mbSortDescending == true) {
		s = "if(Object1." + msSortProperty + " < Object2." + msSortProperty + ") return 1; \r"
		s += "else if(Object1." + msSortProperty + " > Object2." + msSortProperty + ") return -1; \r"
		s += "else return 0;"
	}
	else {
		s = "if(Object1." + msSortProperty + " < Object2." + msSortProperty + ") return -1; \r"
		s += "else if(Object1." + msSortProperty + " > Object2." + msSortProperty + ") return 1; \r"
		s += "else return 0;"
	}

	return s;	
}


//-------------------------------------------------------------------------------------
// Function:	SortObjectData
//
// Synopsis:	Sorts an array of objects.
//
// Arguments:	oObjects		The array of objects to be sorted.
//				sProperty		Property to sort on.
//				bDescending		Indicates if data is to be sorted in descending order.
//
// Returns:		none
//
// Notes:		none
//
//-------------------------------------------------------------------------------------
function SortObjectData(oObjects, sProperty, bDescending) {

	// Assign sorting variables.
	msSortProperty   = sProperty;
	mbSortDescending = bDescending;

	var sBody = BuildSortFunction();
	var fnSortOnProperty = new Function("Object1", "Object2", sBody);

	// Sort objects based on property value.
	oObjects.sort(fnSortOnProperty);
}
