<!-- // START ETS FORMMAIL VERIFY SCRIPT

// NOTE: to see an alert with all of the form variables, 
//       un-comment the "show_all_form_vars()" function 
//       which is located near the top of the
//       "ets_verify_form()" function below.

var ets_has_initialized_form = 0;
ets_required_form_fields_array = new Array();

// This is the function that performs form verification. It will be invoked
// from the onSubmit() event handler. The handler should return whatever   
// value this function returns.                                            
//////////////////////////////////////////////////////////////////         
function ets_verify_form(f)
{
  var msg;
  var empty_fields = "";
  var errors = "";

   if(!ets_has_initialized_form) { 
     ets_init_form(f);
   }
       	
  for(var i = 0; i < f.length; i++) {
     var e = f[i];
     if (e.required) {
        if ((e.type == "text") || (e.type == "textarea") || (e.type == "password") || (e.type == "file")) {
           // first check if the field is empty
           if ((e.value == null) || (e.value == "") || ets_input_contains_only_blanks(e.value)) {
              empty_fields += "\n          " + e.name;
              continue;
           }
        }
		// ELSE IF Select-multiple
		///////////////////////////////
		else if(e.type == "select-multiple"){
     	   for (var j = 0; j < e.options.length; j++ ){
			  if(e.options[j].selected == true ) {
			     ets_required_form_fields_array[e.name].ok++;
			  }		 
		   }
		   if(ets_required_form_fields_array[e.name].ok < 1) {
		      empty_fields += "\n          " + e.name;
		   }		
		   ets_required_form_fields_array[e.name].ok = 0;	
	    }                                                       
		// END Check Select-multiple
		
		// ELSE IF Select-One
		///////////////////////////////
		else if(e.type == "select-one"){
     	   for (var j = 0; j < e.options.length; j++ ){
			  if(e.options[j].selected == true ) {
			     if ((e.options[j].value == null) || (e.options[j].value == "") || ets_input_contains_only_blanks(e.options[j].value)){
		            // NOTE: THIS SHOULD STATE NOT SELECTED VS EMPTY 
					empty_fields += "\n          " + e.name;
                    continue;
                 }
			  }		 
		   }			
	    }                                                       
		// END Check Select-One
		
		else if (e.type == "checkbox") {
		   ets_required_form_fields_array[e.name].verified_values++;		
           if(e.checked){
			  ets_required_form_fields_array[e.name].ok++;
		   }
		   if( ets_required_form_fields_array[e.name].verified_values == ets_required_form_fields_array[e.name].number_of_values){
			  if (ets_required_form_fields_array[e.name].ok < 1 ) {
		         // NOTE: THIS SHOULD STATE NOT CHECKED VS EMPTY 
				 empty_fields += "\n          " + e.name;
			  }
			  ets_required_form_fields_array[e.name].ok = 0;
			  ets_required_form_fields_array[e.name].verified_values = 0;
 		   }		
		}
		else if (e.type == "radio") {
		   ets_required_form_fields_array[e.name].verified_values++;
           if(e.checked){
				 ets_required_form_fields_array[e.name].ok++;
		   }	 
		   if(ets_required_form_fields_array[e.name].verified_values == ets_required_form_fields_array[e.name].number_of_values) {		
			  if (ets_required_form_fields_array[e.name].ok < 1 ) {
		         // NOTE: THIS SHOULD STATE NOT CHECKED VS EMPTY 
				 empty_fields += "\n          " + e.name;
			  }
			  ets_required_form_fields_array[e.name].ok = 0;
			  ets_required_form_fields_array[e.name].verified_values = 0;
 		   }		
		}
		// Required Fields NOT Found Above
        else {
           // DEBUG 
           // alert("This type was not found: "+e.type+" - "+e);
		}
     }                             
	 // END if( e.required)
  }                                
  // END for(var i = 0; i < rf.length; i++)
      
	  
     // Now, if there were any errors, display the messages, and
     // return false to prevent the form from being submitted.  
     // Otherwise return true.                                  
	 if (!empty_fields && !errors) return true;
	 
     msg  = "______________________________________________________\n\n"
     msg += "The form was not submitted because of the following error(s).\n";
     msg += "Please correct these error(s) and re-submit.\n";
     msg += "______________________________________________________\n\n"
 
     if (empty_fields) {
         msg += " The following required field(s) are empty:" 
                 + empty_fields + "\n";
         if (errors) msg += "\n";
     }
     msg += errors;
     alert(msg);
     return false;

 }  
 // End of ets_verify_form()

 

//
// Class to hold required field data
////////////////////////////////////////////////////////////////////////
function ETS_Required_Feild_Data_Class() 
{
   this.number_of_values = 1;
   this.verified_values = 0;
   this.ok = 0;
}


 
// This checks for the hidden field "required" in the form. If found, sets 
// input values for each found field so that the script will verify their
// their values are filled in
//////////////////////////////////////////////////////////////////
function ets_init_form(f)
{
    if(f.required && !((f.required.value == null) || (f.required.value == "") || ets_input_contains_only_blanks(f.required.value))) {
        var rf = f.required.value.split(",");   
        for(var i = 0; i < rf.length; i++) {
            if( f[rf[i]] ) {
	        rf[i].compleat = -1;
	        if( f[rf[i]].type != null ) {  
	            f[rf[i]].required = true;
  	            ets_required_form_fields_array[rf[i]] = new ETS_Required_Feild_Data_Class();
	        }
	        else {
                    for(var k = 0; k < f.length; k++) {
		        if(f[k].name == rf[i]) {
			    f[k].required = true;
           		    if(!ets_required_form_fields_array[rf[i]]) {
             		        ets_required_form_fields_array[rf[i]] = new ETS_Required_Feild_Data_Class();
           		    }
			    else{
           		        ets_required_form_fields_array[rf[i]].number_of_values++;
           	            }   
       	                }
	            }   									 
                }   									 	 
	    }
	    else {
                alert("Error: Required field " + i + ", \"" + rf[i] + "\", does not exist on this form.\n\n\n Run ets_show_all_vars() for a Form Report...\n" );
            }


        }  										
    }											  	
    ets_has_initialized_form ++;
} 
// end ets_init_form()




// A utility function that returns true if a string contains only 
// whitespace characters.                                         
//////////////////////////////////////////////////////////////////
function ets_input_contains_only_blanks(s)
{
   for(var i = 0; i < s.length; i++) {
       var c = s.charAt(i);
       if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
   }
   return true;
}



//  DEBUG FUNCTION :
//  This function will show all of the form varibles.
//  This function can be removed to redude document size.
//////////////////////////////////////////////////////////////////
function ets_show_all_vars(f)
{

if(!f){
   if(document.forms[0]){
      f = document.forms[0];
   }else{
     alert("Warning: No Forms found in the document\n");
     return;
   }
}
  var allvalues = "Following is a list of all the form feilds\n\n";
  allvalues += "No. - Name - Type - Value - Required - Status\n";
  allvalues += "===   ====   ====   =====   ========   ========";
  for(var i = 0; i < f.length; i++) {
     allvalues += "\n"+i+". "+f[i].name+" - "+f[i].type+" - "+f[i].value; 
	 if(f[i].required) {
	    allvalues += "  - REQUIRED"; 
     } else {
	    allvalues += "  - "; 
	 } 
     if ((f[i].type == "text") || (f[i].type == "textarea") || (f[i].type == "password") || (f[i].type == "file")) {
        // first check if the field is empty
        if ( (f[i].value == null) || (f[i].value == "") || ets_input_contains_only_blanks(f[i].value)) {
		   allvalues += "  - Blank"
        }else {
		   allvalues += "  - Not empty"
		}
     }



	 if((f[i].type == "radio") || (f[i].type== "checkbox")){
	    if(f[i].checked) { 
	        allvalues += " - CHECKED";
		}	
	 }
	 if( (f[i].type == "select-one") || (f[i].type == "select-multiple") ){
	    for ( var j = 0; j < f[i].options.length; j++ ){
			allvalues += "\n       option - " + f[i].options[j].value;
			if( f[i].options[j].selected == true ) {
			        allvalues += " - SELECTED";
			}		 
		}			
	 }
  }
 // alert(allvalues);
 
    var y = window.open("","FORM_VARS","width=800,height=500,scrollbars,resizable,menubar"); 
   var e = y.document;
 
   e.write("<html><head><title>Form Report </title></head>\n<body><pre>" + allvalues + "</pre></body></html>");
 //y.close();
} 
// End ets_show_all_vars()


// END ETS VERIFY SCRIPT -->
