// ------------------------------------------------------------------------------
//
//    form_validations.js
//
//    Copyright, 2005 Precision Software Inc.
// 
// ------------------------------------------------------------------------------
// Each function returns true if validation passed or false if validation failed
// ------------------------------------------------------------------------------
//

/*
   How to use:
   -----------
   1.  Create a function in your page called validate()
   2.  Each field to validate should call one of the field functions below.
   3.  To submit, call the function "validate_submit(name of your form)"
*/



/*
   REVISIONS
   ---------

   DATE        CHANGE DESCRIPTION
   ----------  ----------------------------------------------------------------
   2005-11-07  BASELINE ESTABLISHED (from CorpAV copies)
   2005-

*/




// Performs the validation and submit functions for a form
// -------------------------------------------------------
function validate_submit(formname)
{
   if(window.validate)
   {
      if(validate())
      {
         document[formname].submit();
      
         return (true);
      }
      else
      {
         return (false);
      }
   }
   else
   {
      document[formname].submit();

      return (true);
   }
}

// Function Name        Description
// -------------        ----------------------------------------------
// FieldChanged         Field is not the original value
// FieldIsNumber        Value entered is a valid number
// FieldIsValidEmail    Value is a valid email address
// FieldLongEnough      Value contains enough characters
// FieldShortEnough     Value doesn't contain too many characters

// ------------------------------------------------------------------------------
function FieldChanged(form_field, msg)
{
   if (form_field.value==form_field.defaultValue)
   {
     alert(msg);
     form_field.select();
     form_field.focus();
     return false;
   }
   else
   {
      return true;
   }
}

// ------------------------------------------------------------------------------
function FieldNonEmpty(form_field, msg, focus_only)
{
   if (form_field.value.length==0)
   {
     alert(msg);

     if(!focus_only)
        form_field.select();
        
     form_field.focus();
     return false;
   }
   else
   {
      return true;
   }
}

// ------------------------------------------------------------------------------
function FieldNonEmptyNoFocus(form_field, msg)
{
   if (form_field.value.length==0)
   {
     alert(msg);
     return false;
   }
   else
   {
      return true;
   }
}


// ------------------------------------------------------------------------------
function FieldIsNumber(form_field, msg)
{
   form_field.value = str_replace(",", ".", form_field.value, 0);
   form_field.value = str_replace(" ", "", form_field.value, 0);

   if (isNaN(form_field.value))
   {
     alert(msg);
     form_field.select();
     form_field.focus();
     return false;
   }
   else
   {
      return true;
   }
}


// ------------------------------------------------------------------------------
function FieldIsNumberBetween(form_field, low_num, high_num, msg)
{
   form_field.value = str_replace(",", ".", form_field.value, 0);
   form_field.value = str_replace(" ", "", form_field.value, 0);

   if (isNaN(form_field.value))
   {
     alert(msg);
     form_field.select();
     form_field.focus();
     return false;
   }
   else
   {
      var x = parseInt(form_field.value);

      if((x < low_num) || (x > high_num))
      {
        alert(msg);
        form_field.select();
        form_field.focus();
        return false;
      }
   }

   return true;
}


// ------------------------------------------------------------------------------
function FieldIsValidEmail(form_field, msg)
{
   var emailFilter=/^.+@.+\..{2,3}$/;

   if (!(emailFilter.test(form_field.value)))
   {
     alert(msg);
     form_field.select();
     form_field.focus();
     return false;
   }
   else
   {
      return true;
   }

}

// ------------------------------------------------------------------------------
function FieldLongEnough(form_field, min_length, msg)
{
   if (form_field.value.length < min_length)
   {
     alert(msg);
     form_field.select();
     form_field.focus();
     return false;
   }
   else
   {
      return true;
   }
}

// ------------------------------------------------------------------------------
function FieldShortEnough(form_field, max_length, msg)
{
   if (form_field.value.length > max_length)
   {
     alert(msg);
     form_field.select();
     form_field.focus();
     return false;
   }
   else
   {
      return true;
   }
}

// ------------------------------------------------------------------------------
function PasswordsAreSame(pass_field1, pass_field2, msg)
{
   if (pass_field1.value != pass_field2.value)
   {
     alert(msg);
     pass_field1.select();
     pass_field1.focus();
     return false;
   }
   else
   {
      return true;
   }
}

// ------------------------------------------------------------------------------
function FieldRadioIsSelected(form_field, msg)
{
   for (i=0, n=form_field.length; i<n; i++)
   {
      if (form_field[i].checked)
      {
         var checkvalue = form_field[i].value;
         break;
      }
   }

   if(!(checkvalue))
   {
     alert(msg);
//     form_field[0].select();
     form_field[0].focus();
     return false;
   }
   else
   {
      return true;
   }

}

// ------------------------------------------------------------------------------
function FieldIsValidISODate(form_field, msg)
{
   var valid = true;
   var str;

   str = form_field.value;
   
   if(str.length != 10)
      valid = false;

   if(!(parseInt(str.substr(0, 4), 10) >= 1990))
   {
      valid = false;
   }

   if(str.substr(4, 1) != "-")
   {
      valid = false;
   }

   if(!(parseInt(str.substr(5, 2), 10) >= 1))
   {
      valid = false;
   }

   if(str.substr(7, 1) != "-")
   {
      valid = false;
   }

   if(!(parseInt(str.substr(8, 2), 10) >= 1))
   {
      valid = false;
   }

   if(valid == false)
   {
     alert(msg);
     form_field.select();
     form_field.focus();
     return false;
   }
   else
   {
      return true;
   }
}

