var members = new Array();


function extractColumn(id)
{
    var tableBody = document.getElementById(id);

    var n;
    while (n = tableBody.firstChild) {
        if (n.nodeType == 1) {
            // should be == Node.ELEMENT_NODE, but IE refuses to be compliant
            members.push(n);
        }
        tableBody.removeChild(n);
    }
}

function fillColumn(id, start, end) {
    var tableBody = document.getElementById(id);
    
    for (var i = start; i < end; ++i) {
        tableBody.appendChild(members[i]);
    }
}

var sortKey;

function keyCompare(a, b) {
    var as = a.getAttribute(sortKey);
    var bs = b.getAttribute(sortKey);
    
    if (as < bs) return -1;
    if (bs < as) return 1;
    return 0;
}

function fillSorted() {
    members = [];
    
    extractColumn('column1');
    extractColumn('column2');
    extractColumn('column3');
    
    members.sort(keyCompare);
    
    var n1 = Math.ceil(members.length / 3);
    var n2 = Math.ceil((members.length - n1) / 2);
    var n3 = members.length - n1 - n2;
    
    fillColumn('column1', 0, n1);
    fillColumn('column2', n1, n1 + n2);
    fillColumn('column3', n1 + n2, members.length);
    
    members = [];

    document.cookie = "sort=" + sortKey + ";path=/";
}


function byName() { sortKey = 'keyName'; fillSorted(); }
function byRank() { sortKey = 'keyRank'; fillSorted(); }
function byChoice() {
    var m = document.cookie.match(/(^|; *)sort=([^;]*)/);
    sortKey = 'keyName';
    if (m  &&  m.length == 3) {
        if (m[2] == "keyRank") sortKey = 'keyRank';
    }
    fillSorted();
}
