function addAll(selInID, selOutID) {
  var selIn = document.getElementById(selInID);
  var selOut = document.getElementById(selOutID);
  var selectedArray = new Array();
  var i;
  var count = 0;
  for (i = 0; i < selOut.options.length; i++) {
    if (selOut.options[i].selected) {
      addItem(selIn, selOut.options[i].value, selOut.options[i].text);
      selectedArray[count] = selOut.options[i].value;
      count++;
    }
  }
  
  for (i = 0; i < count; i++) {
    removeItem(selOut, selectedArray[i]);
  }
}
  
function moveAll(selInID, selOutID) {
  var selIn = document.getElementById(selInID);
  var selOut = document.getElementById(selOutID);
  var selectedArray = new Array();
  var i;
  var count = 0;
  for (i = 0; i < selOut.options.length; i++) {
    if (selOut.options[i].selected) {
      addItem(selIn, selOut.options[i].value, selOut.options[i].text);
      selectedArray[count] = selOut.options[i].value;
      count++;
    }
  }
  
  for (i = 0; i < count; i++) {
    removeItem(selOut, selectedArray[i]);
  }
}
  
function removeAll(selInID) {
  var selIn = document.getElementById(selInID);
  var selectedArray = new Array();
  var i;
  for (i = 0; i < selIn.options.length; i++) {
   selectedArray[i] = selIn.options[i].value;
   
  }
  
  for (i = 0; i < selectedArray.length; i++) {
    removeItem(selIn, selectedArray[i]);
  }
}
 
function selectItem(box, item) {
  if ((box != null) && (item != "")) {
    var i = 0;
    for (i = 0; i < box.options.length; i++) {
      if (box.options[i].value == item) {
        box.options[i].selected = true;
        return;
      }
    }
  }
}

function addItemFromIds(boxId, itemId) {
  var box = document.getElementById(boxId);
  var item = document.getElementById(itemId);
  if ((box != null) && (item != null)) {
    addItem(box, item.value, item.value);
    item.value = '';
    item.focus();
  }
}
 
function addItem(box, item, desc) {
    var in_box = 0;
    var i = 0;
    if (item != "") {
        for (i = 0; i < box.options.length; i++) {
            if ((box.options[i].value == item) && (box.options[i] != "")) {
                in_box = 1;
                break;
            }
        }
        if (in_box == 0) {
            var noption = new Option();
            noption.value = item;
            noption.text = desc;
            box.options[box.options.length] = noption;
        }
    }
}

function removeItem(box, item) {
    if (item != "") {
        for (var i = 0; i < box.options.length; i++) {
            if ((box.options[i].value == item) && (box.options[i] != "")) { 
              box.options[i].value = "";
              box.options[i].text = "";
            }
        }
    }
    BumpUp(box);
}

function removeSelectedItem(box) {
  if (box != null) {
    if (box.options.length > 0) {
      if (box.selectedIndex != -1) {
        var selectedItem = box.options[box.selectedIndex];
        if (selectedItem != null) {
          removeItem(box, selectedItem.value);
        }
      } else {
        alert("Please select an item to remove.");
        box.focus();
      }
    }
  }
}

function BumpUp(abox) {
  for (var i = 0; i < abox.options.length; i++) {
      if (abox.options[i].value == "")  {
          for (var j = i; j < abox.options.length - 1; j++) {
              abox.options[j].value = abox.options[j + 1].value;
              abox.options[j].text = abox.options[j + 1].text;
          }
          var ln = i;
          break;
      }
  }

  if (ln < abox.options.length)  {
      abox.options.length -= 1;
      BumpUp(abox);
  }
}
