﻿function DualListBox(elementName, availableID, selectedId) {
    this.unassignedItems = document.getElementById(availableID);
    this.assignedItems = document.getElementById(selectedId);
    this.assignButton = document.getElementById("AssignButton_" + elementName);
    this.unassignButton = document.getElementById("UnassignButton_" + elementName);
    this.moveUpButton = document.getElementById("MoveUpButton_" + elementName);
    this.moveDownButton = document.getElementById("MoveDownButton_" + elementName);

    var me = this;
    this.selectAssignedItems = function() { DualListBox_SelectAllItems(me.assignedItems); };
    this.assignButton.onclick = function() { DualListBox_TransferSelectedItems(me.unassignedItems, me.assignedItems); };
    this.unassignButton.onclick = function() { DualListBox_TransferSelectedItems(me.assignedItems, me.unassignedItems); };
    this.moveUpButton.onclick = function() { DualListBox_MoveSelectedItemUp(me.assignedItems); };
    this.moveDownButton.onclick = function() { DualListBox_MoveSelectedItemDown(me.assignedItems); };
    //this.assignButton.form.onsubmit = function() { DualListBox_SelectAllItems(me.assignedItems); };
    YAHOO.util.Event.addListener(this.assignButton.form, "submit", function() { me.selectAssignedItems(); });
}

function DualListBox_SelectAllItems(obj) {
    //fix for ingredients application not selecting
    var ob;
    ob = obj; //document.getElementById('ctl00_ContentPlaceHolder1_frmDynamicForm_Applications_ctl00');

    if (ob != "undefined") {
        for (var i = 0; i < ob.options.length; i++) {
            ob.options[i].selected = true;
        }
    }
    for (var i = 0; i < obj.options.length; i++) {
        obj.options[i].selected = true;
    }
}

function DualListBox_TransferSelectedItems(from, to) {
    // Move selected items
    for (var i = 0; i < from.options.length; i++) {
        var o = from.options[i];
        if (o.selected) {
            var index = to.options.length;
            to.options[index] = new Option(o.text, o.value, false, false);
        }
    }

    // Delete selected items
    for (var i = (from.options.length - 1); i >= 0; i--) {
        var o = from.options[i];
        if (o.selected) {
            from.options[i] = null;
        }
    }

    // reset selected index
    from.selectedIndex = -1;
    to.selectedIndex = -1;
}

function DualListBox_MoveSelectedItemUp(lst) {
    var index = lst.selectedIndex;
    if (index > 0) {
        var sel = new Option(lst.options[index].text, lst.options[index].value, false, false);
        var tmp = new Option(lst.options[index - 1].text, lst.options[index - 1].value, false, false);
        lst.options[index] = tmp;
        lst.options[index - 1] = sel;
        lst.selectedIndex = index - 1;
    }
}

function DualListBox_MoveSelectedItemDown(lst) {
    var index = lst.selectedIndex;
    if (index > -1 && index < (lst.options.length - 1)) {
        var sel = new Option(lst.options[index].text, lst.options[index].value, false, false);
        var tmp = new Option(lst.options[index + 1].text, lst.options[index + 1].value, false, false);
        lst.options[index] = tmp;
        lst.options[index + 1] = sel;
        lst.selectedIndex = index + 1;
    }
}


