﻿    function mis_add(lb1, lb2, hf, s) {
        var AllItemsListBox = $mis_id(lb1);
        var SelectedItemsListBox = $mis_id(lb2);
        for (var i = 0; i < AllItemsListBox.options.length; i++) {
            if (AllItemsListBox.options[i].selected && AllItemsListBox.options[i].value != 999999) { 
                var found = false;
                for (var j = 0; j < SelectedItemsListBox.options.length; j++) {
                    if (AllItemsListBox.options[i].value == SelectedItemsListBox.options[j].value) {
                        found = true;
                        break;
                    }
                }
                if (!found) {
                    var newOption = window.document.createElement('OPTION');
                    newOption.text = AllItemsListBox.options[i].text;
                    newOption.value = AllItemsListBox.options[i].value;
                    
                    SelectedItemsListBox.options.add(newOption);
                    SelectedItemsListBox.selectedIndex = SelectedItemsListBox.options.length - 1;
                    AllItemsListBox.selectedIndex = i < AllItemsListBox.options.length - 1 ? i+1 : AllItemsListBox.options.length - 1;
                }
                break;
            }
        }
        mis_sync(lb1, lb2, hf, s);
    }
    function mis_del(lb1, lb2, hf, s) {
        var AllItemsListBox = $mis_id(lb1);
        var SelectedItemsListBox = $mis_id(lb2);
        var index = SelectedItemsListBox.selectedIndex;
        if (SelectedItemsListBox.selectedIndex >= 0) {
            SelectedItemsListBox.remove(SelectedItemsListBox.selectedIndex);
            if (index < SelectedItemsListBox.options.length) {
                SelectedItemsListBox.selectedIndex = index;
            } else {
                SelectedItemsListBox.selectedIndex = SelectedItemsListBox.options.length - 1;
            }
            mis_sync(lb1, lb2, hf, s);
        }
    }
    function mis_up(lb1, lb2, hf, s) {
        var SelectedItemsListBox = $mis_id(lb2);
        for (var i = 0; i < SelectedItemsListBox.options.length; i++) {
            if ( SelectedItemsListBox.options[i].selected ) {
                if (i > 0) {
                    var tempOption = window.document.createElement('OPTION');
                    tempOption.text = SelectedItemsListBox.options[i-1].text;
                    tempOption.value = SelectedItemsListBox.options[i-1].value;
                    
                    SelectedItemsListBox.options[i-1].text = SelectedItemsListBox.options[i].text;
                    SelectedItemsListBox.options[i-1].value = SelectedItemsListBox.options[i].value;
                    SelectedItemsListBox.options[i-1].selected = true;
                    
                    SelectedItemsListBox.options[i].text = tempOption.text;
                    SelectedItemsListBox.options[i].value = tempOption.value;
                    SelectedItemsListBox.options[i].selected = false;
                    
                    break;
                }
            }            
        }
        mis_sync(lb1, lb2, hf, s);
    }
    function mis_down(lb1, lb2, hf, s) {
        var SelectedItemsListBox = $mis_id(lb2);
        for (var i = 0; i < SelectedItemsListBox.options.length; i++) {
            if ( SelectedItemsListBox.options[i].selected ) {
                if (i < (SelectedItemsListBox.options.length - 1)) {
                    var tempOption = window.document.createElement('OPTION');
                    tempOption.text = SelectedItemsListBox.options[i+1].text;
                    tempOption.value = SelectedItemsListBox.options[i+1].value;
                    
                    SelectedItemsListBox.options[i+1].text = SelectedItemsListBox.options[i].text;
                    SelectedItemsListBox.options[i+1].value = SelectedItemsListBox.options[i].value;
                    SelectedItemsListBox.options[i+1].selected = true;
                    
                    SelectedItemsListBox.options[i].text = tempOption.text;
                    SelectedItemsListBox.options[i].value = tempOption.value;
                    SelectedItemsListBox.options[i].selected = false;
                    
                    break;
                }
            }            
        }
        mis_sync(lb1, lb2, hf, s);
    }
    function mis_info(div, lb, str, vis) {
        var InfoBox = $mis_id(div);
        var ListBox = $mis_id(lb);
        InfoBox.style.visibility = vis ? "visible" : "hidden";
        InfoBox.style.left = ListBox.style.left;
        InfoBox.style.top = '130px';
        //alert(InfoBox.style.top + ' - ' + ListBox.style.height);
        InfoBox.innerHTML = str;
    }
    function mis_sync(lb1, lb2, hf, s) {
        var AllItemsListBox = $mis_id(lb1);
        var SelectedItemsListBox = $mis_id(lb2);
        var SelectedValuesHiddenField = $mis_id(hf);
        var vals = "";
        for (var i = 0; i < SelectedItemsListBox.options.length; i++) {
            vals += SelectedItemsListBox.options[i].value;
            if (i < SelectedItemsListBox.options.length - 1) vals += s;
        }
        SelectedValuesHiddenField.value = vals;
    }
    function $mis_id() {
        var results = [], element;
        for (var i = 0; i < arguments.length; i++) {
            element = arguments[i];
            if (typeof element == 'string')
                element = document.getElementById(element);
            results.push(element);
        }
        return results.length < 2 ? results[0] : results;
    }
    