/* ValidateForm 
 * Form Validation Functions 
 * By Richard Lanzillo
 *
 * Define a function like 
 * valForm( someVariable ){ and call these functions }
 * checking return value
 * in form tag like this
 * onSubmit="javascript:return valForm( this );"
 *  this being the form itself.
 * so:
 * validateDate( someVariable.formElemetName.value, "Date" )
 *
 * validateDate( fieldValue, fieldName )
 * validateInt( fieldValue, fieldName )
 * validateFloat( fieldValue, fieldName )
 * validatePhone( fieldValue, fieldName )
 * validateEmail( fieldValue, fieldName )
 * validateZip( fieldValue, fieldName )
 * validateField( fieldValue, fileName )
 * validateTextArea( fieldValue, fieldName )
 */ 
 
/* Check format of date field */
function validateDate( fieldValue, fieldName ){
 
  if( !validateField( fieldValue, fieldName ) ) {
    
    return false;
  }
  
  var temp = "";
  
  if( fieldValue.length == 0 ){        
	
    temp += " Field: " + fieldName + "\n\n";
    temp += " Is Manditory";
    
    alert( temp );
    
    return false;
  }
  else{
    
    var dateValue = fieldValue;

    
    dateArray = dateValue.split("-");
    
    if( dateArray.length != 3 ){
      
      temp += " Your Date format should be \n\n";
      temp += "    mm-dd-yyyy ";
        
      alert( temp );
      
      return false;

    } // end if date length
      
    // check if all characters are numbers
    else if( isNaN( parseInt(dateArray[0]) ) ||
             isNaN( parseInt(dateArray[1]) ) ||
	     isNaN( parseInt(dateArray[2]) ) ){
      
      temp += " Field: " + fieldName + "\n\n";
      temp += " Your Date format should be \n\n";
      temp += "    mm-dd-yyyy  \n\n";
      temp += " And must contain only numbers";	
      
      alert( temp );
      
      return false;
    }
      
    else if( ( dateArray[0].length != 2 ) ||
             ( dateArray[1].length != 2 ) || 
             ( dateArray[2].length != 4 ) ){      
                
      temp += " Field: " + fieldName + "\n\n";
      temp += " Your Date format should be \n\n";
      temp += "    mm-dd-yyyy   ";
          
      alert( temp );
      
      return false;
          
    } // end else if of date
      
    else{

      return true;
    }
    
  } // end else not null
  
} // end dateVal()

/* validateInt just check if this a number */
function validateInt( fieldValue, fieldName ){

    if( !validateField( fieldValue, fieldName ) ) {
	return false;
    }

  var temp = "";
  
  if( fieldValue.length == 0 ){        
	
    temp += " Field: " + fieldName + "\n\n";
    temp += " Is Manditory";
    
    alert( temp );
    
    return false;
  }
  else{
  
    if( isNaN(fieldValue) ){        
	
      temp += " Field: " + fieldName + "\n\n";
      temp += " Must be a valid number"
    
      alert( temp );
      
      return false;
    }
    else{
    
      return true;
    }
  
  } // end if not null
  
} // end validateInt

/* validateFloat just check if this a number */
function validateFloat( fieldValue, fieldName ){
 
    if( !validateField( fieldValue, fieldName ) ) {
	return false;
    }
  
  var temp = "";
  
  if( fieldValue.length == 0 ){        
	
    temp += " Field: " + fieldName + "\n\n";
    temp += " Is Manditory";
    
    alert( temp );
    
    return false;
  }
  else{
    
    if( isNaN( parseFloat( fieldValue ) ) ){        
	
      temp += " Field: " + fieldName + "\n\n";
      temp += " Must be a valid number"
    
      alert( temp );
      
      return false;
    }
    else{
      return true;
    }
  
  } // end if not null
  
} // end validateFloat

/* validateField */
function validateField( fieldValue, fieldName ){

    var hasValue = false;
    var temp = "";
    var nullValues = 0;
    var badValues = 0;
       
    if( fieldValue.length == 0 ){        
	
	hasValue = false;
    }
    else{
    	
	for( var i = 0; i < fieldValue.length; i++ ){

	    if( fieldValue.charAt(i) == " " ) {

		nullValues++;
	    }
	    
	    if( fieldValue.charAt(i) == "\n" ||
		fieldValue.charAt(i) == "\t" ||
		fieldValue.charAt(i) == "\," ||
		fieldValue.charAt(i) == "\'" ||
		fieldValue.charAt(i) == "\"" ||
		fieldValue.charAt(i) == "\<" ||
		fieldValue.charAt(i) == "\>" ||
		fieldValue.charAt(i) == "\`" ||
		fieldValue.charAt(i) == "\;" ) {

		badValues++;

		break;

	    }
	}
	
	if( nullValues == fieldValue.length ) {

	    hasValue = false;
	}
	else if ( badValues > 0 ) {

	    hasValue = false;
	}
	else {

	    hasValue = true;
	}
    }

  if( !hasValue ) {
	
	temp += " Field: " + fieldName + "\n\n";
	
	if ( badValues > 0 ) {
	   temp += " Has invalid characters\n\n";
	   temp += " \`\, \"\, \'\, \;\, \<\, \>\, tabs or new lines \n";
	}
	else{ 
	   temp += " Is Manditory";
	}
    
	alert( temp );
  }

  return hasValue;
  
} // end validateField

/* validatePhone() */

function validatePhone( fieldValue, fieldName ){

    if( !validateField( fieldValue, fieldName ) ) {
	return false;
    }
  
  var temp = "";

  if( fieldValue == "" ){
    
    temp += " Field: " + fieldName + "\n\n";
    temp += " Is a manditory field";
    
    alert( temp );
    
    return false;    
  } // end if phone
  else{    
      
    phoneArray = phone.split("-");
    
    if( phoneArray.length != 3 ){
      
      temp += " Field: " + fieldName + "\n\n";
      temp += " Your Phone Number format should be \n\n";
      temp += "    xxx-xxx-xxxx  ";
    
      alert( temp );
      
      return false;
      
    } // end if phone length
    else if( ( phoneArray[0].length != 3 ) ||
             ( phoneArray[1].length != 3 ) || 
             ( phoneArray[2].length != 4 ) ){      
                
      temp += " Field: " + fieldName + "\n\n";
      temp += " Your Phone Number format should be \n\n";
      temp += "    xxx-xxx-xxxx  ";
    
      alert( temp );
      
      return false;        
    } // end inner else if of phone
      
  } // end else phone

} // end validatePhone

/* validateZip */

function validateZip( fieldValue, fieldName ){

    if( !validateField( fieldValue, fieldName ) ) {
	return false;
    }
  
  var temp = "";
  
  if( fieldValue == "" ){
  
    temp += " Field: " + fieldName + "\n\n";
    temp += " Your Addess Zip a manditory field";
    
    alert( temp );
    
    return false;    
  } // end if zip
  else if( zip.length < 5 ){
    
    temp += " Field: " + fieldName + "\n\n";
        
    temp += " Your Zip Code must be in \n\n the form of 12345";      
      
    alert( temp );
    
    return false;    
  } // ned else if zip
  else if( isNaN( parseInt(zip) ) ){
    
    temp += " Field: " + fieldName + "\n\n";
    temp += " Your Zip Code must be all \n\n numeric charaters";      
      
    alert( temp );
    
    return false;    
  } // end else if zip
  else{
  
    return true;
  }
    
} // end validateZip


/* validateEmail address */

function validateEmail( fieldValue, fieldName ){

    if( !validateField( fieldValue, fieldName ) ) {
	return false;
    }
  
  var temp = "";
  
  // email validation
  if( fieldValue == "" ){
    
    temp += " Field: " + fieldName + "\n\n";
    temp += " Your E-mail address is a manditory field";
    
    alert( temp );
    
    return false;    
  } // end if email
  else if( (fieldValue.indexOf("@") == -1) || ( fieldValue.indexOf(".") == -1) ){
    
    temp += " Field: " + fieldName + "\n\n";
    temp += " Your E-mail address must be in \n\n";
    temp += " the form of user@domain \n\n";
    temp += " like jim@aol.com";
    
    alert( temp );
    
    return false;
  } // end else if email
  else{
  
    return true;
  }
    
} // end validateEmail

/* validateTextArea */
function validateTextArea( fieldValue, fieldName ){

    var hasValue = false;
    var temp = "";
    var nullValues = 0;
    var badValues = 0;
       
    if( fieldValue.length == 0 ){        
	
	hasValue = false;
    }
    else{
    	
	for( var i = 0; i < fieldValue.length; i++ ){

	    if( fieldValue.charAt(i) == " " ) {

		nullValues++;
	    }
	    
	    if( fieldValue.charAt(i) == "\<" ||
		fieldValue.charAt(i) == "\>" ||
		fieldValue.charAt(i) == "\`" ||
		fieldValue.charAt(i) == "\;" ) {

		badValues++;

		break;

	    }
	}
	
	if( nullValues == fieldValue.length ) {

	    hasValue = false;
	}
	else if ( badValues > 0 ) {

	    hasValue = false;
	}
	else {

	    hasValue = true;
	}
    }

  if( !hasValue ) {
	
	temp += " Field: " + fieldName + "\n\n";
	
	if ( badValues > 0 ) {
	   temp += " Has invalid characters\n\n";
	   temp += " \`\, \;\, \<\, \> \n";
	}
	else{ 
	   temp += " Is Manditory";
	}
    
	alert( temp );
  }

  return hasValue;
  
} // end validateField
