function moveRow(child_obj, direction, item1_id, ajax_path)
{

    // get the row
    while (child_obj.tagName != "TR") {
        child_obj = child_obj.parentNode;
    }

    tbl = child_obj;

    // get the table
    while (tbl.tagName != "TBODY") {
        tbl = tbl.parentNode;
    }

    current_row = child_obj;
    c_index = current_row.rowIndex;

    moved = false;

    if (direction == "up") {
        if (c_index > 2) {
            // copy the row above the clicked row
            row = tbl.rows[c_index - 1];
            // get item id from row
            // replace the row above with clicked row
            tbl.replaceChild(tbl.rows[c_index],tbl.rows[c_index - 1]);
            // add a new row
            tbl.insertRow(c_index);
            // insert the copied row
            tbl.replaceChild(row,tbl.rows[c_index]);

            moved = true;
        }
    } else {
        if (c_index < tbl.rows.length -1) {
            // copy the row above the clicked row
            row = tbl.rows[c_index + 1];
            // replace the row above with clicked row
            tbl.replaceChild(tbl.rows[c_index],tbl.rows[c_index + 1]);
            // add a new row
            tbl.insertRow(c_index);
            // insert the copied row
            tbl.replaceChild(row,tbl.rows[c_index]);

            moved = true;
        }
    }

    if (moved) {
        updateRanks(ajax_path);
        updateRowColours(tbl);
    }

}


function updateRowColours(tbl)
{

    rows = tbl.rows;
    c = 0;
    for (var i = 2; i < rows.length; i++) {
        c = 1 - c;
        if (c == 1) {
            rows[i].className = "";
        } else {
            rows[i].className = "dark";
        }
    }

}


function updateRanks(ajax_path)
{  
    inputs = $('.item-values');
    ids = "";
   
    for (var i = 0; i < inputs.length; i++) {
        ids = ids + inputs[i].value + ",";
    }
        
    var pars = { opt: 'update_ranks', item_ids: ids };
    var url = ajax_path;
    $.getJSON(url, pars, showResponse);
    
}

function showResponse(originalRequest)
{
    //alert(originalRequest);
}



function removeParent(obj, parent_type)
{
    // loop up throught the dom
    while (obj.tagName != parent_type) {
        obj = obj.parentNode;
    }

    // remove the object
    obj_parent = obj.parentNode;
    obj_parent.removeChild(obj);
}






function adminSelectAll()
{
    var select_all = document.getElementById('select-all');
    var email_list_elem = document.getElementById('admin-list');
    var checked_value = false;

    if (email_list_elem && select_all) {

        checked_value = select_all.checked;

        var input_elements = document.getElementsByTagName("INPUT");
        var i;
        for (i = 0; i < input_elements.length; i++) {
            if (input_elements[i].type == "checkbox") {
                input_elements[i].checked = checked_value;
                toggleAdminRow(input_elements[i]);
            }
        }
    }
}

function toggleAdminRow(checkbox_elem)
{
    // get tr
    var tr = checkbox_elem.parentNode;
    while (tr.tagName != "TR") {
        tr = tr.parentNode;
    }
    if (checkbox_elem.checked) {
        if (tr.className.match(/^o/)) {
            tr.className += " highlight_o";
        } else {
            tr.className += " highlight";
        }
    } else {
        if (tr.className.match(/^o/)) {
            tr.className = tr.className.replace(/highlight_o/g, "");
        } else {
            tr.className = tr.className.replace(/highlight/g, "");
        }
    }
}

function initAdminTable()
{
    var email_list = document.getElementById('admin-list');
    if (email_list) {
        email_list.onclick = function(e){ return adminTableClick(e); };
    } else {
        alert("Couldn't find admin-list");
    }
}

function adminTableClick(e)
{
    // get event and target
    var e = e || window.event;
    var t = e.target || e.srcElement;

    if (t.tagName != "A") {

        var checkbox_elem = t;

        // up to table row
        while (t.tagName != "TR") {
            t = t.parentNode;
        }

        if (checkbox_elem.tagName != "INPUT") {
            checkbox_elem = t.getElementsByTagName('INPUT')[0];
            if (checkbox_elem.checked) {
                checkbox_elem.checked = false;
            } else {
                checkbox_elem.checked = true;
            }
        }
        toggleAdminRow(checkbox_elem);
    } else {
        return true;
    }
}

