change-columns.js 4.34 KB
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This Source Code Form is "Incompatible With Secondary Licenses", as
 * defined by the Mozilla Public License, v. 2.0.
 */

function initChangeColumns() {
    window.onunload = unload;
    var av_select = document.getElementById("available_columns");
    var sel_select = document.getElementById("selected_columns");
    YAHOO.util.Dom.removeClass(
        ['avail_header', av_select, 'select_button', 
         'deselect_button', 'up_button', 'down_button'], 'bz_default_hidden');
    switch_options(sel_select, av_select, false);
    sel_select.selectedIndex = -1;
    updateView();
}

function switch_options(from_box, to_box, selected) {
    for (var i = 0; i<from_box.options.length; i++) {
        var opt = from_box.options[i];
        if (opt.selected == selected) {
            var newopt = new Option(opt.text, opt.value, opt.defaultselected, opt.selected);
            to_box.options[to_box.options.length] = newopt;
            from_box.options[i] = null;
            i = i - 1;
        }
        
    }
}

function move_select() {
    var av_select = document.getElementById("available_columns");
    var sel_select = document.getElementById("selected_columns");
    switch_options(av_select, sel_select, true);
    updateView();
}

function move_deselect() {
    var av_select = document.getElementById("available_columns");
    var sel_select = document.getElementById("selected_columns");
    switch_options(sel_select, av_select, true);
    updateView();
}

function move_up() {
    var sel_select = document.getElementById("selected_columns");
    var last = sel_select.options[0];
    var dummy = new Option("", "", false, false);
    for (var i = 1; i<sel_select.options.length; i++) {
        var opt = sel_select.options[i];
        if (opt.selected) {
            sel_select.options[i] = dummy;
            sel_select.options[i-1] = opt;
            sel_select.options[i] = last;
        }
        else{
            last = opt;
        }        
    }
    updateView();
}

function move_down() {
    var sel_select = document.getElementById("selected_columns");
    var last = sel_select.options[sel_select.options.length-1];
    var dummy = new Option("", "", false, false);
    for (var i = sel_select.options.length-2; i >= 0; i--) {
        var opt = sel_select.options[i];
        if (opt.selected) {
            sel_select.options[i] = dummy;
            sel_select.options[i + 1] = opt;
            sel_select.options[i] = last;
        }
        else{
            last = opt;
        }        
    }
    updateView();
}

function updateView() {
    var select_button = document.getElementById("select_button");
    var deselect_button = document.getElementById("deselect_button");
    var up_button = document.getElementById("up_button");
    var down_button = document.getElementById("down_button");
    select_button.disabled = true;
    deselect_button.disabled = true;
    up_button.disabled = true;
    down_button.disabled = true;
    var av_select = document.getElementById("available_columns");
    var sel_select = document.getElementById("selected_columns");
    for (var i = 0; i < av_select.options.length;  i++) {
        if (av_select.options[i].selected) {
            select_button.disabled = false;
            break;
        }
    }
    for (var i = 0; i < sel_select.options.length; i++) {
        if (sel_select.options[i].selected) {
            deselect_button.disabled = false;
            up_button.disabled = false;
            down_button.disabled = false;
            break;
        }
    }
    if (sel_select.options.length > 0) {
        if (sel_select.options[0].selected) {
            up_button.disabled = true;
        }
        if (sel_select.options[sel_select.options.length - 1].selected) {
            down_button.disabled = true;
        }
    }
}

function change_submit() {
    var sel_select = document.getElementById("selected_columns");
    for (var i = 0; i < sel_select.options.length; i++) {
        sel_select.options[i].selected = true;
    }
    return false;
}

function unload() {
	var sel_select = document.getElementById("selected_columns");
    for (var i = 0; i < sel_select.options.length; i++) {
        sel_select.options[i].selected = true;
    }
}