

function controllerAction(actionvar) {
    findMultiChooser();
    document.backingForm.cmd.value = actionvar;
    document.backingForm.submit();
  }
function toggleVisible(elementName, subElementName, visibilityValue){
  var defaultValue = "No";
  var formElement = getElement(elementName);
  var value = getValue(formElement);
  var divElement = document.getElementById("form_" + subElementName);
  if(value != visibilityValue){
    var subElement = getElement(subElementName);
    resetElement(subElement);
    divElement.parentNode.className ="control_invisible";
  }else{
     divElement.parentNode.className ="control_visible";
  }
}
function toggleDisabled(elementName, subElementName, enableValue){
  var formElement = getElement(elementName);
  var value = getValue(formElement);
  disable(getElement(subElementName), value != enableValue);
  }
function getElement(elementName){
  return document.getElementsByName(elementName)
}
function getValue(formElement){
    var value = formElement[0].value;
    if(formElement.length > 1){
      for(var i=0;i < formElement.length;i++){
        if(formElement[i].checked){
         value = formElement[i].value;
        }
      }
   }
   return value;
  }
  function  disable(formElement, disabled){
    var defaultOptionValue = "No";
    var defaultTextValue = "";
    if(formElement.length > 1){
      for(var i=0;i < formElement.length;i++){
        formElement[i].disabled = disabled;
        if(disabled){
          if(formElement[i].value == defaultOptionValue){
            formElement[i].checked = true;
          }else{
            formElement[i].checked = false;
          }
        }
      }
    }else{
      formElement[0].disabled = disabled;
      if(disabled){
        formElement[0].value = defaultTextValue;
      }
    }
}
  function  resetElement(formElement){
    var defaultOptionValue = "No";
    var defaultTextValue = "";
    if(formElement.length > 1){
      for(var i=0;i < formElement.length;i++){
          if(formElement[i].value == defaultOptionValue){
            formElement[i].checked = true;
          }else{
            formElement[i].checked = false;
          }
      }
    }else{
        formElement.value = defaultTextValue;
    }
}
function addToList(listName) {
   var selectedList = document.backingForm.elements[listName];
   var tmpList = document.backingForm.elements["tmp" + listName];

for (i = 0; i <= tmpList.options.length-1; i++) {
if (tmpList[i].selected) {
value = tmpList.options[i].value;
   var text = tmpList.options[i].text;
    var option = document.createElement("OPTION");
    selectedList.options.add(option);
    option.value = value;
    option.text = text;
}
}

var x=0;
while(x<tmpList.length){
if(tmpList.options[x].selected){
tmpList.options[x]=null;
}
else{
x++;}
}
 sortSelectOptions(selectedList.options);

}
function removeKeywordlist(propertyName) {
  if(!deleteSelectedlist(propertyName)) {
    alert("Select '" + propertyName + "' from the select box to remove.");
  }
}
function removeAllKeywordslist(propertyName) {
  deleteAllSelectedListItems(propertyName);
}
 function deleteAllSelectedListItems(propertyName) {
  var selectedList = document.backingForm.elements[propertyName];
  var tmpList = document.backingForm.elements["tmp" + propertyName];
  while(selectedList.length != 0) {
    // addDeletedItemBackToKeywordfromlistWithoutSort(propertyName, 0);
    addDeletedItemBackToKeywordfromlist(propertyName, 0);
    if(isIE()) {
      selectedList.options.remove(0);
    } else {
      selectedList.options[0] = null;
    }
  }
  sortSelectOptions(selectedList.options);
}
 function deleteSelectedlist(propertyName){
   var selectedList = document.backingForm.elements[propertyName];
   var ret = false;
   for(i = selectedList.length - 1; i >= 0; --i) {
     if(selectedList.options[i].selected) {
       addDeletedItemBackToKeywordfromlist(propertyName,i);
       if(isIE()) {
         selectedList.options.remove(i);
       } else {
         selectedList.options[i] = null;
       }
       ret = true;
     }
   }
   return ret;
 }
  function addDeletedItemBackToKeywordfromlist(propertyName, selectedIndex) {
    var selectedList = document.backingForm.elements[propertyName];
    var tmpList = document.backingForm.elements["tmp" + propertyName];
    if(selectedIndex != -1) {
     var value = selectedList.options[selectedIndex].value;
     var text = selectedList.options[selectedIndex].text;
     if(isIE()) {
       var option = document.createElement("OPTION");
       tmpList.options.add(option);
       option.value = value;
       option.text = text;
      } else {
         tmpList.options[tmpList.options.length] = new Option(text, value, false, false);
      }
      sortSelectOptions(tmpList.options);
   } else {
    alert('please select a keyword from the keyword list to add.');
   }
  }
  function sortSelectOptions(selectOptions) {
  var arr=new Array();
  var optionsArray=new Array();
  if (selectOptions.length>0) {
    for (var i=0;i<selectOptions.length;i++) {
      arr[i]=selectOptions[i].text;
      optionsArray[i]=selectOptions[i];
    }
    arr.sort();
    for (var i=selectOptions.length-1;i>=0;i--) {
      selectOptions[i]=null;
    }
    if(isIE()) {
      for (var i=0;i<arr.length;i++) {
        selectOptions.add(getOptionForIE(optionsArray,arr[i]));
      }
    } else {
      for (var i=0;i<arr.length;i++) {
        selectOptions.add(getOptionForNonIE(optionsArray,arr[i]));
      }
    }
   }
 }
 function getOptionForIE(optionsArray,text) {
  for (var i=0;i<optionsArray.length;i++) {
    if (optionsArray[i].text==text) {
    var value = optionsArray[i].value;
    var text = optionsArray[i].text;
      return new Option(text, value, false, false);
    }
  }
 }
 function getOptionForNonIE(optionsArray,text) {
  for (var i=0;i<optionsArray.length;i++) {
    if (optionsArray[i].text==text) {
    var option = document.createElement("OPTION");
    option.value = optionsArray[i].value;
    option.text = optionsArray[i].text;
      return option;
    }
  }
 }
  function isIE() {
    return (document.all ? true : false);
  }
 function showSelected(propertyName) {
    var selectedOptions = "";
    var selectedList = document.backingForm.elements[propertyName];
    for (var i = 0; i < selectedList.options.length; i++){
      if(selectedList.options[i].selected){
        selectedOptions = selectedOptions + selectedList.options[i].value + "\n";
      }
    }
    alert("Selected options of property '" + propertyName + "':" + selectedOptions);
  }
  function findMultiChooser(){
    var formElements = document.backingForm.elements;
    var multiChooser = new Array();
    for(var i=0;i<formElements.length;i++){
      if(formElements[i].name.indexOf("tmp") == 0){
        if(formElements[formElements[i].name.substring(3)]){
          multiChooser.push(formElements[i].name.substring(3));
        }
      }
    }
    for(var i=0;i<multiChooser.length;i++){
      selectAllEntries(multiChooser[i]);
    }  
  }
  function selectAllEntries(propertyName){
    var selectedList = document.backingForm.elements[propertyName];
    for(var i=0;i<selectedList.options.length;i++){
      selectedList.options[i].selected = "true";
    }
  }
