var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5);

function moveOptions(source, target)
{
  
  var selLength = source.length;
  var selectedText = new Array();
  var selectedValues = new Array();
  var selectedCount = 0;
  
  var i;
  
  // Find the selected Options in reverse order
  // and delete them from the source Select.
  for(i=selLength-1; i>=0; i--)
  {
    if(source.options[i].selected)
    {
      selectedText[selectedCount] = source.options[i].text;
      selectedValues[selectedCount] = source.options[i].value;
      deleteOption(source, i);
      selectedCount++;
    }
  }
  
  // Add the selected text/values in reverse order.
  // This will add the Options to the target Select
  // in the same order as they were in the 'from' Select.
  for(i=selectedCount-1; i>=0; i--)
  {
    addOption(target, selectedText[i], selectedValues[i]);
  }
  sortOptions(target);
  
  if(NS4) history.go(0);
}

function deleteOption(object,index) {
    object.options[index] = null;
}

function addOption(object,text,value) {
    var defaultSelected = false;
    var selected = false;
    var optionName = new Option(text, value, defaultSelected, selected)
    object.options[object.length] = optionName;
    object.options[object.length-1].selected = false;
    
}

function sortOptions(what) {
	
    var copyOption = new Array();
    for (var i=0;i<what.options.length;i++)
        copyOption[i] = new Array(what[i].value, what[i].text);

    copyOption.sort();

    for (var i=what.options.length-1;i>-1;i--)
        deleteOption(what,i);

    for (var i=0;i<copyOption.length;i++)
        addOption(what,copyOption[i][1],copyOption[i][0])
}


function selectAll(selectObj){
    for (var i=0; i<selectObj.options.length; i++){
        selectObj.options[i].selected=true;
    }
}

function selectNone(selectObj){
    for (var i=0; i<selectObj.options.length; i++){
        selectObj.options[i].selected=false;
    }
}

function selectMultiCall(callback){
	
	var selects = $$('.right_select');
	for (var i = 0; i<selects.length; i++){
		selectAll(selects[i]);
	}
	
	if (typeof(callback) == 'string') {
		eval(callback);
	}else {
		callback();
	}
	
	for (var i = 0; i<selects.length; i++){
		selectNone(selects[i]);
	} 
}