/*# The contents of this file are subject to the Mozilla Public
  # License Version 1.1 (the "License"); you may not use this file
  # except in compliance with the License. You may obtain a copy of
  # the License at http://www.mozilla.org/MPL/
  #
  # Software distributed under the License is distributed on an "AS
  # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  # implied. See the License for the specific language governing
  # rights and limitations under the License.
  #
  # The Original Code is the Bugzilla Bug Tracking System.
  #
  # The Initial Developer of the Original Code is Pascal Held.
  #
  # Contributor(s): Pascal Held <paheld@gmail.com>
  #
*/

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;
    }
}