/**************************************************************************************************/
/* Validate functions                                                                             */

  function validateTextField(form)
  {
  	args = validateTextField.arguments;
  	error = false;

    for (i=1; i<(args.length); i++)
    {
      fieldname = args[i];

    	if (form.elements[fieldname])
    	{
    	  if (trim(form.elements[fieldname].value) == "")
      	{
      		if (form.elements[fieldname].className == "formInput")
      		  form.elements[fieldname].className = "formInputError";
      		else if (form.elements[fieldname].className == "formInputRequired")
      		  form.elements[fieldname].className = "formInputRequiredError";
      		if (!error)
      		  form.elements[fieldname].focus();
      		error = true;
      	}
      	else
      	{
      		if (form.elements[fieldname].className == "formInputError")
      		  form.elements[fieldname].className = "formInput";
      		else if (form.elements[fieldname].className == "formInputRequiredError")
      		  form.elements[fieldname].className = "formInputRequired";
      	}
      }
    }

  	return !error;
  }

  function validateNumericField(form)
  {
  	args = validateNumericField.arguments;
  	error = false;

    for (i=1; i<(args.length); i++)
    {
      fieldname = args[i];

    	if (form.elements[fieldname])
    	{
    	  var value = form.elements[fieldname].value;

        if (isNaN(parseInt(value)))
        {
      		if (form.elements[fieldname].className == "formInput")
      		  form.elements[fieldname].className = "formInputError";
      		else if (form.elements[fieldname].className == "formInputRequired")
      		  form.elements[fieldname].className = "formInputRequiredError";
      		if (!error)
      			form.elements[fieldname].focus();
      		error = true;
        }
        else
        {
      		if (form.elements[fieldname].className == "formInputError")
      		  form.elements[fieldname].className = "formInput";
      		else if (form.elements[fieldname].className == "formInputRequiredError")
      		  form.elements[fieldname].className = "formInputRequired";
        }
      }
    }

  	return !error;
  }

  function validateDateField(form)
  {
  	args = validateDateField.arguments;
  	error = false;

    for (i=1; i<(args.length); i++)
    {
      fieldname = args[i];

    	if (form.elements[fieldname])
    	{
    	  var date = form.elements[fieldname].value;

        if ( date.length != 10
             || isNaN(parseInt(date.substr(0,2)))
             || isNaN(parseInt(date.substr(3,2)))
             || isNaN(parseInt(date.substr(6,4))) )
        {
      		if (form.elements[fieldname].className == "formInput")
      		  form.elements[fieldname].className = "formInputError";
      		else if (form.elements[fieldname].className == "formInputRequired")
      		  form.elements[fieldname].className = "formInputRequiredError";
      		if (!error)
      			form.elements[fieldname].focus();
      		error = true;
        }
        else
        {
      		if (form.elements[fieldname].className == "formInputError")
      		  form.elements[fieldname].className = "formInput";
      		else if (form.elements[fieldname].className == "formInputRequiredError")
      		  form.elements[fieldname].className = "formInputRequired";
        }
      }
    }

  	return !error;
  }

  function validateTimeField(form)
  {
  	args = validateTimeField.arguments;
  	error = false;

    for (i=1; i<(args.length); i++)
    {
      fieldname = args[i];

    	if (form.elements[fieldname])
    	{
    	  var time = form.elements[fieldname].value;

        if ( time.length != 5
             || isNaN(parseInt(time.substr(0,2)))
             || isNaN(parseInt(time.substr(3,2))) )
        {
      		if (form.elements[fieldname].className == "formInput")
      		  form.elements[fieldname].className = "formInputError";
      		else if (form.elements[fieldname].className == "formInputRequired")
      		  form.elements[fieldname].className = "formInputRequiredError";
      		if (!error)
      			form.elements[fieldname].focus();
      		error = true;
        }
        else
        {
      		if (form.elements[fieldname].className == "formInputError")
      		  form.elements[fieldname].className = "formInput";
      		else if (form.elements[fieldname].className == "formInputRequiredError")
      		  form.elements[fieldname].className = "formInputRequired";
        }
      }
    }

  	return !error;
  }

  function validateOptionField(form)
  {
  	args = validateOptionField.arguments;
  	error = false;

    for (i=1; i<(args.length); i++)
    {
      fieldname = args[i];

    	if (form.elements[fieldname])
    	{
    	  var selectedIndex = form.elements[fieldname].selectedIndex

        if ( form.elements[fieldname].options[selectedIndex].value == 0 )
        {
      		if (!error)
      			form.elements[fieldname].focus();
      		error = true;
        }
    	}
    }

    return !error;
  }

  function validateCheckboxes(form)
  {
  	args = validateCheckboxes.arguments;
  	error = false;

    for (i=1; i<(args.length); i++)
    {
      fieldname = args[i];

    	if (form.elements[fieldname])
    	{
    	  var isChecked = form.elements[fieldname].checked

        if ( isChecked )
      		error = true;
    	}
    }

    return !error;
  }

/**************************************************************************************************/

/**************************************************************************************************/
/* Check functions                                                                                */

  function checkFloatField(form)
  {
  	args = checkFloatField.arguments;
  	error = false;

    for (i=1; i<(args.length); i++)
    {
      fieldname = args[i];

    	if (form.elements[fieldname])
    	{
    	  var value = form.elements[fieldname].value;

        if (trim(value) != "" & isNaN(parseFloat(value)))
        {
      		if (form.elements[fieldname].className == "formInput")
      		  form.elements[fieldname].className = "formInputError";
      		else if (form.elements[fieldname].className == "formInputRequired")
      		  form.elements[fieldname].className = "formInputRequiredError";
      		if (!error)
      			form.elements[fieldname].focus();
      		error = true;
        }
        else
        {
      		if (form.elements[fieldname].className == "formInputError")
      		  form.elements[fieldname].className = "formInput";
      		else if (form.elements[fieldname].className == "formInputRequiredError")
      		  form.elements[fieldname].className = "formInputRequired";
        }
      }
    }

  	return !error;
  }

/**************************************************************************************************/

/**************************************************************************************************/
/* Helper functions                                                                               */

  function trim(value)
  {
    var temp = value;
    var obj = /^(\s*)([\W\w]*)(\b\s*$)/;

    if (obj.test(temp))
    {
      temp = temp.replace(obj, '$2');
    }

    var obj = / +/g;
    temp = temp.replace(obj, " ");

    if (temp == " ")
    {
      temp = "";
    }

    return temp;
  }

/**************************************************************************************************/

