// restore form fields - works with server script util_inc_form.asp
// copyright 2000 IMARCSGroup.com

// RestoreField - restore a fields value, given form, name of field and a value
//  tested with: checkboxes, radio button arrays, single select drop down lists,
//   text, text areas, submit buttons, reset buttons, hidden, multiselect listboxes.
//   checkbox arrays, passwords
// TODO: test with image buttons and single select list boxes
function RestoreField (zForm, zName, zValue)
{
var zType="";
var objField;

   objField = eval (zForm + "." + zName);
   if (objField != null && objField != "" && objField != "undefined")
   {   
      zType = eval (zForm + "." + zName + ".type");
      zValue = unescape(zValue);
      if (zType == "text" || zType == "textarea" || zType == "hidden" || zType == "password")
         objField.value = zValue;
      else if (zType == "select-one")
      {
         var nLen = objField.length;
         for (var nLoop=0; nLoop < nLen; nLoop++)
            if (objField[nLoop].value == zValue)
            {
               objField.selectedIndex = nLoop;
               nLoop = nLen + 1;
            }
      }
      else if (zType == "checkbox")
      {
         if ((zValue == "on") || (zValue == "1") || (zValue == "true") || (zValue == objField.value))
            objField.checked = true;
         else
            objField.checked = false;
      }
      else if (zType == "select-multiple")
      {
      var nStart = (-1);

         var nLen = objField.length;
         for (var nLoop=0; nLoop < nLen; nLoop++)
            objField[nLoop].selected = false;
         zValue += ",";
         var nEnd = zValue.indexOf(",", nStart);
         while (nEnd != (-1))
         {
            var strMulti = zValue.substr (nStart+1, (nEnd-nStart)-1);
            nStart = nEnd+1;
            nEnd = zValue.indexOf(",", nStart);
            for (var nLoop=0; nLoop < nLen; nLoop++)
               if (objField[nLoop].value == strMulti)
               {
                  objField[nLoop].selected = true;
                  nLoop = nLen + 1;
               }
         }
      }
      else if (zType == null)
      {
         zType = objField[0].type; 
         if (zType == "radio")
         {
         var nLen = 0;
                  
            while (objField[nLen] != null)
               nLen++;
            for (var nLoop=0; nLoop < nLen; nLoop++)
               if (objField[nLoop].value == zValue)
                  objField[nLoop].checked = true;
         }
         else if (zType == "checkbox")
         {
         var nStart = (-1);
         
            var nLen = objField.length;
            for (var nLoop=0; nLoop < nLen; nLoop++)
               objField[nLoop].checked = false;
            var aryValues = zValue.split (",");      
            for (var nValLoop=0; nValLoop < aryValues.length; nValLoop++)
            {
               for (var nLoop=0; nLoop < nLen; nLoop++)
                  if (objField[nLoop].value == aryValues[nValLoop])
                     objField[nLoop].checked = true;
            }
         }
         else if (zType == "text")
         {
            var aryValues = zValue.split (", ");
            for (var nValLoop=0; nValLoop < aryValues.length; nValLoop++)
               objField[nValLoop].value = String(aryValues[nValLoop]);
         }
      }
   }
}

