//THIS FUNCTION CHECKS TO SEE IF THE VALUE IS FILLED IN
function isFilled(field)
{
  if(field.value === ""  || field.selectedIndex === 0 || field.value === null)
  {
	return false;
  }
  return true;
}

//THIS FUNCTION CHECKS TO SEE IF THE VALUE IS GREATER THAN THE MAXIMUM VALUE
function isGtMax(field)
{
  if(field.value > field.maxVal.value)
  {
  	return false;
  }
  return true;
}

//THIS FUNCTION CHECKS TO SEE IF THE VALUE IS LESS THAN THE MINIMUM VALUE
function isLtMin(field)
{
  if(field.value < field.minVal.value)
  {
	return false;
  }
  return true;
}

//THIS FUNCTION CHECKS TO SEE IF THE VALUE IS A VALID DATE
function isValidDate(field)
{
  //if(!isDate(field)) //TODO: Need to find a valid way to check for a valid date
  //{
//	return false;
  //}
  //return true;
}

//THIS FUNCTION CHECKS TO SEE IF THE VALUE IS A VALID EMAIL
function isValidEmail(field)
{
  //if(!isEmail(field)) //TODO: Need to find a valid way to check for a valid email
  //{
//	return false;
  //}
  //return true;
}

function displayErrorIcons(errorFields)
{
  var errorIcon = "";
  var errorTxt = "";
  var findParent = "";
  for( var i = 0; i < errorFields.length; i++ )
  {
    findParent = document.getElementById(errorFields[i][0]).parentNode;
    errorIcon = document.createElement('img');
	errorIcon.src = '/images/icons/errorIcon.gif';
	errorIcon.id = 'errorIcon';
	errorIcon.alt = 'Error';
    errorIcon.title = 'Error';
	findParent.insertBefore(errorIcon, document.getElementById(errorFields[i][0]));
	errorTxt = document.createElement('span');
	errorTxt.id = 'errorTxt';
	errorTxt.innerHTML = errorFields[i][1];
	errorTxt.className = 'required small';
	findParent.appendChild(errorTxt);
  }
}

function clearErrors(frmName) 
{
  var i = 0;
  
  //Clear previous error icons and messages if they exist.
  for(i = 0; i < frmName.elements.length; i++)
  {
    if(document.getElementById('errorIcon'))
    {
      var parentElement = document.getElementById('errorIcon').parentNode;
      parentElement.removeChild(document.getElementById('errorIcon'));
      parentElement.removeChild(document.getElementById('errorTxt'));
    }
  }
}

//THIS IS THE MAIN FUNCTION THAT CALLS ALL OTHERS
function verifyForms(frmName)
{
  var errorFields = new Array(); 
  var customMessage = new Array();
  var i=0;
  
  clearErrors(frmName);

  for(i = 0; i < frmName.elements.length; i++)
  {
	if(frmName.elements[i].required) //This field is required
	{
	  if(!isFilled(frmName.elements[i])) //Returns false if field is not filled in
	  {
	    if(frmName.elements[i].errorMsg)  //If field has an error message set
	    {
          errorFields.push([frmName.elements[i].id,frmName.elements[i].errorMsg + "\n"]);
        }
	    else //Otherwise, use a default message
	    {
		  errorFields.push([frmName.elements[i].id,frmName.elements[i].name + " is required.\n"]);
	    }
	  }
	}
	if(frmName.elements[i].maxVal) //This field has a maximum value
	{
	  if(!isGtMax(frmName.elements[i])) 
	  {
	    if(frmName.elements[i].errorMsg)  //If field has an error message set
	    {
          errorFields.push([frmName.elements[i].id,frmName.elements[i].errorMsg + "\n"]);
        }
	    else //Otherwise, use a default message
	    {
          errorFields.push([frmName.elements[i].id,frmName.elements[i].name + " is greater than the maximum allowed.\n"]);
	    }
	  }
	}
	if(frmName.elements[i].minVal) //This field has a minimum value
	{	
	  if(!isLtMin(frmName.elements[i])) 
	  {
	    if(frmName.elements[i].errorMsg)  //If field has an error message set
	    {
          errorFields.push([frmName.elements[i].id,frmName.elements[i].errorMsg + "\n"]);
        }
	    else //Otherwise, use a default message
	    {
		  errorFields.push([frmName.elements[i].id,frmName.elements[i].name + " is less than the minimum allowed.\n"]);
	    }
	  }
	}
	if(frmName.elements[i].dateValue) //This field is a date
	{
	  if(!isValidDate(frmName.elements[i])) 
	  {
	    if(frmName.elements[i].errorMsg)  //If field has an error message set
	    {
          errorFields.push([frmName.elements[i].id,frmName.elements[i].errorMsg + "\n"]);
        }
	    else //Otherwise, use a default message
	    {
          errorFields.push([frmName.elements[i].id,frmName.elements[i].name + " is not a valid date.\n"]);
	    }
	  }
	}
	if(frmName.elements[i].email) //This field is an e-mail address
	{
	  if(!isValidEmail(frmName.elements[i])) 
	  {
	    if(frmName.elements[i].errorMsg)  //If field has an error message set
	    {
          errorFields.push([frmName.elements[i].id,frmName.elements[i].errorMsg + "\n"]);
        }
	    else //Otherwise, use a default message
	    {
          errorFields.push([frmName.elements[i].id,frmName.elements[i].name + " is not a valid e-mail address.\n"]);
	    }
	  }
	}
  }
  if(window.customVerify)
  {
    //If a page needs additional custom verification, this section will
	//take the errors and add them to the error fields arrays to display on the page.
    customMessage = customVerify();
    if(customMessage !== true)
    {
      for(i = 0; i < customMessage.length; i++ )
      {
        errorFields.push([customMessage[i][0],customMessage[i][1] + "\n"]);
      }
    }
  }
  displayErrorIcons(errorFields);
  if(errorFields.length > 0)
  {
	return false;
  }
  return true;
}