var fuDebug = false;

function lookup_select_index_by_value(select,value)
    {
    var i;
    for (i = 0; i < select.length; i++)
        {
        if (select.options[i].value == value)
            {
            return(i);
            }
        }
    return(0);
    }

function lookup_select_index_by_text(select,text)
    {
    var i;
    for (i = 0; i < select.length; i++)
        {
        if (select.options[i].text == text)
            {
            return(i);
            }
        }
    return(0);
    }

function setFormFromCookie(formElement, cookieName)                     
  {
  if (fuDebug) { alert('setFormFromCookie:cookieName=' + cookieName); }
  var cookie_str = GetCookie(cookieName);                   

  if (formElement && formElement.type == "hidden")         
    {
    formElement.value = cookie_str;                                  
    if (fuDebug) { alert('setFormFromCookie:type=hidden:name=' + formElement.name + ':value=' + formElement.value); }
    }

  if (formElement && formElement.type == "text")         
    {
    formElement.value = cookie_str;                                  
    if (fuDebug) { alert('setFormFromCookie:type=text:name=' + formElement.name + ':value=' + formElement.value); }
    }

  if (formElement && formElement.type == "textarea")         
    {
    formElement.value = cookie_str;                                  
    if (fuDebug) { alert('setFormFromCookie:type=textarea:name=' + formElement.name + ':value=' + formElement.value); }
    }

  if (formElement && formElement.type == "select-multiple")         
    {
    cvals = cookie_str.split(';');
    for (var i = 0; i < formElement.length; i++)
      {
      for (var j = 0; j < cvals.length; j++)
        {
        if (formElement[i].value == cvals[j])
          {
          formElement[i].selected = true;
          if (fuDebug) { alert('setFormFromCookie:type=select-multiple:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
          }
        }
      }
    }

  if (formElement && formElement.type == "select-one")         
    {
    for (var i = 0; i < formElement.length; i++)
      {
      if (formElement.options[i].value == cookie_str)
        {
        formElement.selectedIndex = i;
        if (fuDebug) { alert('setFormFromCookie:type=select-one:name=' + formElement.name + ':value=' + formElement.options[formElement.selectedIndex].value); }
        }
      }
    }

  if (formElement && formElement.type == "radio")
    {
    if (formElement.value == cookie_str)
      {
      formElement.checked = true;
      if (fuDebug) { alert('setFormFromCookie:type=radio:name=' + formElement.name + ':value=' + formElement.value + ":checked=" + formElement.checked); }
      }
    }

  if (formElement && formElement[0] && formElement[0].type == "radio")
    {
    for (var i = 0; i < formElement.length; i++)
      {
      if (formElement[i].value == cookie_str)
        {
        formElement[i].checked = true;
        if (fuDebug) { alert('setFormFromCookie:type=radio:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
        }
      }
    }

  if (formElement && formElement.type == "checkbox")
    {
    if (formElement.value == cookie_str)
      {
      formElement.checked = true;
      if (fuDebug) { alert('setFormFromCookie:type=checkbox:name=' + formElement.name + ':value=' + formElement.value + ":checked=" + formElement.checked); }
      }
    }

  if (formElement && formElement[0] && formElement[0].type == "checkbox")
    {
    cvals = cookie_str.split(';');
    for (var i = 0; i < formElement.length; i++)
      {
      for (var j = 0; j < cvals.length; j++)
        {
        if (formElement[i].value == cvals[j])
          {
          formElement[i].checked = true;
          if (fuDebug) { alert('setFormFromCookie:type=checkbox:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
          }
        }
      }
    }
  }

function setCookieFromForm(formElement, cookieName)         
  {
  if (fuDebug) { alert('setCookieFromForm:cookieName=' + cookieName); }
  var cookie_str = "";
  
  if (formElement && formElement.type == "hidden")
    {
    cookie_str = formElement.value;
    if (fuDebug) { alert('setCookieFromForm:type=hidden:name=' + formElement.name + ':value=' + formElement.value); }
    }

  if (formElement && formElement.type == "text")
    {
    cookie_str = formElement.value;
    if (fuDebug) { alert('setCookieFromForm:type=text:name=' + formElement.name + ':value=' + formElement.value); }
    }

  if (formElement && formElement.type == "select-multiple")         
    {
    var cookie_str = "";
    for (var i = 0; i < formElement.length; i++)
      {
      if (formElement[i].selected)
        {
        if (cookie_str == "")
          {
          cookie_str = formElement[i].value;
          if (fuDebug) { alert('setCookieFromForm:type=select-multiple:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
          }
        else
          {
          cookie_str = cookie_str + ";" + formElement[i].value;
          if (fuDebug) { alert('setCookieFromForm:type=select-multiple:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
          }
        }
      }
    }

  if (formElement && formElement.type == "select-one")         
    {
    cookie_str = formElement.options[formElement.selectedIndex].value;
    if (fuDebug) { alert('setCookieFromForm:type=select-one:name=' + formElement.name + ':value=' + formElement.options[formElement.selectedIndex].value); }
    }

  if (formElement && formElement.type == "radio")
    {
    cookie_str = formElement.checked;
    if (fuDebug) { alert('setCookieFromForm:type=radio:name=' + formElement.name + ':value=' + formElement.value + ":checked=" + formElement.checked); }
    }

  if (formElement && formElement[0] && formElement[0].type == "radio")
    {
    var cookie_str = "";
    for (var i = 0; i < formElement.length; i++)
      {
      if (formElement[i].checked)
        {
        cookie_str = formElement[i].value;
        if (fuDebug) { alert('setCookieFromForm:type=radio:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
        }
      }
    }

  if (formElement && formElement.type == "checkbox")
    {
    if (formElement.checked)
      {
      cookie_str = formElement.value;
      if (fuDebug) { alert('setCookieFromForm:type=checkbox:name=' + formElement.name + ':value=' + formElement.value + ":checked=" + formElement.checked); }
      }
    }

  if (formElement && formElement[0] && formElement[0].type == "checkbox")
    {
    var cookie_str = "";
    for (var i = 0; i < formElement.length; i++)
      {
      if (formElement[i].checked)
        {
        if (cookie_str == "")
          {
          cookie_str = formElement[i].value;
          if (fuDebug) { alert('setCookieFromForm:type=checkbox:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
          }
        else
          {
          cookie_str = cookie_str + ";" + formElement[i].value;
          if (fuDebug) { alert('setCookieFromForm:type=checkbox:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
          }
        }
      }
    }

  var expires = new Date();
  expires.setFullYear(expires.getFullYear() + 1);
  SetCookie(cookieName, cookie_str, expires);
  } 

function setFormFromString(formElement, str)                     
  {
  if (formElement && formElement.type == "hidden")         
    {
    formElement.value = str;                                  
    if (fuDebug) { alert('setFormFromString:type=hidden:name=' + formElement.name + ':value=' + formElement.value); }
    }

  if (formElement && formElement.type == "text")         
    {
    formElement.value = str;                                  
    if (fuDebug) { alert('setFormFromString:type=text:name=' + formElement.name + ':value=' + formElement.value); }
    }

  if (formElement && formElement.type == "textarea")         
    {
    formElement.value = str;                                  
    if (fuDebug) { alert('setFormFromString:type=textarea:name=' + formElement.name + ':value=' + formElement.value); }
    }

  if (formElement && formElement.type == "select-multiple")         
    {
    cvals = str.split(';');
    for (var i = 0; i < formElement.length; i++)
      {
      for (var j = 0; j < cvals.length; j++)
        {
        if (formElement[i].value == cvals[j])
          {
          formElement[i].selected = true;
          if (fuDebug) { alert('setFormFromString:type=select-multiple:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
          }
        }
      }
    }

  if (formElement && formElement.type == "select-one")         
    {
    for (var i = 0; i < formElement.length; i++)
      {
      if (formElement.options[i].value == str)
        {
        formElement.selectedIndex = i;
        if (fuDebug) { alert('setFormFromString:type=select-one:name=' + formElement.name + ':value=' + formElement.options[formElement.selectedIndex].value); }
        }
      }
    }

  if (formElement && formElement.type == "radio")
    {
    if (formElement.value == str)
      {
      formElement.checked = true;
      if (fuDebug) { alert('setFormFromString:type=radio:name=' + formElement.name + ':value=' + formElement.value + ":checked=" + formElement.checked); }
      }
    }

  if (formElement && formElement[0] && formElement[0].type == "radio")
    {
    for (var i = 0; i < formElement.length; i++)
      {
      if (formElement[i].value == str)
        {
        formElement[i].checked = true;
        if (fuDebug) { alert('setFormFromString:type=radio:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
        }
      }
    }

  if (formElement && formElement.type == "checkbox")
    {
    if (formElement.value == str)
      {
      formElement.checked = true;
      if (fuDebug) { alert('setFormFromString:type=1checkbox:name=' + formElement.name + ':value=' + formElement.value + ":checked=" + formElement.checked); }
      }
    }

  if (formElement && formElement[0] && formElement[0].type == "checkbox")
    {
    cvals = str.split(';');
    for (var i = 0; i < formElement.length; i++)
      {
      for (var j = 0; j < cvals.length; j++)
        {
        if (formElement[i].value == cvals[j])
          {
          formElement[i].checked = true;
          if (fuDebug) { alert('setFormFromString:type=Ncheckbox:name=' + formElement[i].name + ':value=' + formElement[i].value + ":checked=" + formElement[i].checked); }
          }
        }
      }
    }
  }


function setCheckboxListState(cbname, state)
  {
  if (cbname && cbname.length)
    {
    for (var i = 0; i < cbname.length; i++)
      {
      cbname[i].checked = state;
      }
    }
  else if (cbname)
    {
    cbname.checked = state;
    }
  }

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);
  }

function setSelectList(el, list)
  {
  el.options.length=0;
  for (var i = 0; i < list.length; i++)
    {
    el.options[i]=new Option(list[i], list[i]);
    }
  }

