function multiSelect_movebox(frombox,tobox,maxsels)
{
  var totalsels=tobox.options.length;
  for(var i=0; i<frombox.options.length; i++)
  {
    if(frombox.options[i].selected && frombox.options[i].value!="" && (totalsels<maxsels || maxsels==-1))
    {
      totalsels++;
      multiSelect_insertbox(tobox,frombox.options[i].value,frombox.options[i].text);
      frombox.options[i].value="";
      frombox.options[i].selected = false;
    }
  }
  multiSelect_deletespaces(frombox);
}

function multiSelect_insertbox(box,value,text)
{
  var pos=box.options.length;
  var option=new Option(text,value);
  box.options[pos]=option;

  var i=0;
  while(pos>0)
  {
    i++;
    if (text>box.options[pos-1].text)
      break;
    box.options[pos].value=box.options[pos-1].value;
    box.options[pos].text=box.options[pos-1].text;
    pos--;
  }

  box.options[pos].value=value;
  box.options[pos].text=text;
}
	
function multiSelect_findobject(form,name)
{
  for(var i=0;i<form.elements.length;i++)
    if (form.elements[i].name==name)
      return form.elements[i];
  return null;
}










function multiSelect_deletespaces(box)
{
  var displace=0;
  
  
  for (var i=0; i<box.options.length; i++)
  {
    if (box.options[i].value=="")
      displace++;
    else
      if (displace!=0)
      {
        box.options[i-displace].value=box.options[i].value;
        box.options[i-displace].text=box.options[i].text;
      }
  }

  i = box.options.length;
  
  while (displace>0)
  {
    i--;
    box.options[i]=null;
    displace--;
  } 
}

function multiSelect_setsave(frombox,tobox)
{
  var i;
  for (i=0; i<frombox.options.length; i++)
    frombox.options[i].selected=false;
  for (i=0; i<tobox.options.length; i++)
    tobox.options[i].selected=true;
}

function multiSelect_boxtransfer(frombox,tobox,id)
{
  for (var i=0;i<frombox.options.length;i++)
    if (frombox.options[i].value==id)
    {
      multiSelect_insertbox(tobox,frombox.options[i].value,frombox.options[i].text);
      frombox.options[i].value="";
    }
  multiSelect_deletespaces(frombox);
}

function multiSelect_boxtransferlist(frombox,tobox,str)
{
  var start=0;
  var end;

  while (start<str.length)
  {
    for (end=start+1;end<=str.length;end++)
      if (str.substring(end-1,end)==',')
        break;
    multiSelect_boxtransfer(frombox,tobox,str.substring(start,end-1));
    start=end;
  }
}
 