// +----------------------------------------------------------------+
// |    QUICK SORT Partition Process                                |
// +----------------------------------------------------------------+

var PIVOT;
var giSortOrder = 0;

function partition(rows, l, r){

    var i = l - 1;
    var j = r;

    PIVOT = rows[r].innerText;

    if (giSortOrder == 0){
        do{
            while(rows[++i].innerText < PIVOT);
            while((i < --j) && (PIVOT < rows[j].innerText));
            if (i >= j) break;
            rows[i].swapNode(rows[j]);
        }while(1);
    } else {
        do{
            while(rows[++i].innerText > PIVOT);
            while((i < --j) && (PIVOT > rows[j].innerText));
            if (i >= j) break;
            rows[i].swapNode(rows[j]);
        }while(1);
    }

    rows[i].swapNode(rows[r]);

    return(i);
}

// +----------------------------------------------------------------+
// |    QUICK SORT Engine for Table List                            |
// +----------------------------------------------------------------+

function TblQuickSort(rows, start, end){
    // rows : Table BODY ROWS Collection Object to be sorted
    // start: Table row start number to be sorted (0,1,2,...)
    // start: Table row end   number to be sorted (0,1,2,...)

    var left;
    var right;
    var v;
    var sp;
    var low  = new Array();
    var high = new Array();

    low [0] = start;
    high[0] = end-1;
    sp = 1;

    while(sp > 0){
        sp --;
        left    = low [sp];
        right   = high[sp];
        if (left >= right){
        } else {
            v = partition(rows, left, right);
            if ((v - left) < (right - v)){
                low [sp]    = v + 1;
                high[sp++]  = right;
                low [sp]    = left;
                high[sp++]  = v - 1;
            } else {
                low [sp]    = left;
                high[sp++]  = v - 1;
                low [sp]    = v + 1;
                high[sp++]  = right;
            }
        }
    }
}
// +----------------------------------------------------------------+
// |    QUICK SORT Engine for Table List: END 2010/12/18(Sat)       |
// +----------------------------------------------------------------+

