
function sortOptionFunction(a,b)
  {
  var ret = 0;
  if (a.text < b.text) 
    {  
    ret = -1; 
    }
  else if (a.text > b.text) 
    {  
    ret = 1; 
    }
  return(ret);
  }

function prependSelectOptions(master_list, new_list)
  {
  if (!master_list) { master_list = new Array(); }
  if (!new_list) { new_list = new Array(); }

  var option_list = new Array();
  var oc = 0;

  for (var i = 0; i < new_list.length; i++)
    {
    option_list[oc++] = new_list[i];
    }

  for (var i = 0; i < master_list.length; i++)
    {
    option_list[oc++] = master_list[i];
    }

  return(option_list);
  }

function appendSelectOptions(master_list, new_list)
  {
  if (!master_list) { master_list = new Array(); }
  if (!new_list) { new_list = new Array(); }

  var option_list = new Array();
  var oc = 0;

  for (var i = 0; i < master_list.length; i++)
    {
    option_list[oc++] = master_list[i];
    }

  for (var i = 0; i < new_list.length; i++)
    {
    option_list[oc++] = new_list[i];
    }

  return(option_list);
  }

function mergeSelectOptions(master_list, new_list)
  {
  if (!master_list) { master_list = new Array(); }
  if (!new_list) { new_list = new Array(); }

  // add a flag to mark if an option has already been merged
  for (var j = 0; j < new_list.length; j++)
    {
    new_list[j].done = false;
    }

  var option_list = new Array;
  var oc = 0;

  for (var i = 0; i < master_list.length; i++)
    {
    for (var j = 0; j < new_list.length; j++)
      {
      if (!new_list[j].done && new_list[j].text < master_list[i].text)
        {
        option_list[oc++] = new_list[j];
        new_list[j].done = true;
        }
      }
    option_list[oc++] = master_list[i];
    }

  // put any leftovers at the end
  for (var j = 0; j < new_list.length; j++)
    {
    if (!new_list[j].done)
      {
      option_list[oc++] = new_list[j];
      new_list[j].done = true;
      }
    }

  return(option_list);
  }
