var tableArray = null;
var lastSort = -1;

function initArray(tableId) {
        if (tableArray == null) {
                var table = document.getElementById(tableId);
				
                if (table != null) {
                        var Rows = table.rows.length - 1;
                        var cols = table.rows[0].cells.length;
                        tableArray = new Array(Rows);
                        for (var i=0; i<Rows; i++) {
                                tableArray[i] = new Array(cols);
                                for (var j=0; j<cols; j++) {
                                        tableArray[i][j] = table.rows[i+1].cells[j].innerHTML;
                                }
                        }
                }
        }
}
function flipArray() {
        if (tableArray != null) {
                var Rows = tableArray.length;
                var halfrows = Rows/2;
                for (var i=0; i<halfrows; i++) {
                        var temp = tableArray[i];
                        tableArray[i] = tableArray[Rows-i-1];
                        tableArray[Rows-i-1] = temp;
                }
        }
}

function sortArrayByText(colNum) {
        if (tableArray != null) {
                var rows = tableArray.length;
                for (var i=0; i<(rows-1); i++) {
                        for (var j=i+1; j<rows; j++) {
                                if (tableArray[j][colNum].toLowerCase() < tableArray[i][colNum].toLowerCase()) {
                                        var temp = tableArray[j];
                                        tableArray[j] = tableArray[i];
                                        tableArray[i] = temp;
                                }
                        }
                }
        }
}

function sortArrayByNumber(colNum) {
        if (tableArray != null) {
                var rows = tableArray.length;
                for (var i=0; i<(rows-1); i++) {
                        for (var j=i+1; j<rows; j++) {
                                if (parseFloat(tableArray[j][colNum]) < parseFloat(tableArray[i][colNum])) {
                                        var temp = tableArray[j];
                                        tableArray[j] = tableArray[i];
                                        tableArray[i] = temp;
                                }
                        }
                }
        }
}

function redrawTable(tableId) {
        if (tableArray != null) {
                var table = document.getElementById(tableId);
                if (table != null) {
                        var Rows = table.rows.length - 1;
                        var cols = table.rows[0].cells.length;
                        for (var i=0; i<Rows; i++) {
                                for (var j=0; j<cols; j++) {
                                        table.rows[i+1].cells[j].innerHTML = tableArray[i][j];
                                }
                        }
                }
        }
}

function SortTable(tableId, colNum, colType) {
        initArray(tableId);
        if (lastSort == colNum) {
                flipArray();
        } else if (colType == 'n') {
                sortArrayByNumber(colNum);
        } else {
                sortArrayByText(colNum);
        }
        lastSort = colNum;
        redrawTable(tableId);
		tableArray = null;
}

