var formObjects = new Array();
var language = new Array();
language["header"] = "Your submission contains the following errors:\n"
language["field"] = ". ";
language["require"] = ". ";
language["and"] = " and ";
language["smin"] = " must consist of between ";
//language["nmin"] = " must contain a value between ";
language["chars"] = " characters";
language["num"]	= " must contain a number";
language["select"] = " must contain a valid selection";
language["email"] = ". ";

function define(formName, fieldName, desc, type, min, max, required){
var theFormField = new formField(formName, fieldName, desc, type, min, max, required);
formObjects[eval(formObjects.length)] = theFormField;
}

function formField(formName, fieldName, desc, type, min, max, required){
this.formName = formName;
this.fieldName = fieldName;
this.type = type;
this.desc = desc;
this.min = min;
this.max = max;
this.isRequired = required;
}

function validate(formName, button){
if(button){
	button.disabled = true;
}


var errors = "";
var errorcount = 0;
for(i = 0; i < formObjects.length; i++) {
  if(formObjects[i].formName==formName){	
    valtoCheck = document.forms[formName].elements[formObjects[i].fieldName].value;
    switch(formObjects[i].type){
      case 'email':
      if(valtoCheck.length > 0){
	if((valtoCheck.indexOf("@") == -1) || (valtoCheck.charAt(0) == ".") || (valtoCheck.charAt(0) == "@") || (valtoCheck.length < 6) || (valtoCheck.indexOf(".") == -1) || (valtoCheck.charAt(valtoCheck.indexOf("@")+1) == ".") || (valtoCheck.charAt(valtoCheck.indexOf("@")-1) == ".")) { 
	  errorcount++;
	  errors += errorcount + language['field'] + formObjects[i].desc + language['email'] + "\n";
	  document.forms[formName].elements[formObjects[i].fieldName].style.borderColor = '#ff0000'; 
      document.forms[formName].elements[formObjects[i].fieldName].style.backgroundColor = '#f0f0f0'; 
	}
      }else if(formObjects[i].isRequired==1){
	errorcount++;
	errors += errorcount + language['field'] + formObjects[i].desc + language['email'] + "\n"; 
	document.forms[formName].elements[formObjects[i].fieldName].style.borderColor = '#ff0000';	
	document.forms[formName].elements[formObjects[i].fieldName].style.backgroundColor = '#f0f0f0'; 	
      }
      break;
      case 'num':
      if(valtoCheck.length > 0){
  	if(isNaN(valtoCheck)) { 
    	  errorcount++;
    	  errors += errorcount + language['field'] + formObjects[i].desc + language['num'] + "\n";
    	  document.forms[formName].elements[formObjects[i].fieldName].style.borderColor = '#ff0000';
		  document.forms[formName].elements[formObjects[i].fieldName].style.backgroundColor = '#f0f0f0'; 
        }else if(formObjects[i].min!=null && formObjects[i].max!=null){
          if((valtoCheck < formObjects[i].min) || (valtoCheck > formObjects[i].max)){
    	    errorcount++;
    	    errors += errorcount + language['field'] + formObjects[i].desc + language['nmin'] + formObjects[i].min + language['and'] + formObjects[i].max + "\n";
    	    document.forms[formName].elements[formObjects[i].fieldName].style.borderColor = '#ff0000';
			document.forms[formName].elements[formObjects[i].fieldName].style.backgroundColor = '#f0f0f0'; 
    	  }  
    	}
      }else if(formObjects[i].isRequired==1){
	errorcount++;
  	errors += errorcount + language['field'] + formObjects[i].desc + language['require'] + language['and'] + language['num'] + "\n";
  	document.forms[formName].elements[formObjects[i].fieldName].style.borderColor = '#ff0000';
	document.forms[formName].elements[formObjects[i].fieldName].style.backgroundColor = '#f0f0f0'; 
      }
      break;
      case 'string':
      if(valtoCheck.length > 0){
        if(formObjects[i].min!=null && formObjects[i].max!=null){
          if((valtoCheck.length < formObjects[i].min) || (valtoCheck.length > formObjects[i].max)){
            errorcount++;
            errors += errorcount + language['field'] + formObjects[i].desc + language['smin'] + formObjects[i].min + language['and'] + formObjects[i].max + language["chars"] + "\n";
            document.forms[formName].elements[formObjects[i].fieldName].style.borderColor = '#ff0000';
			document.forms[formName].elements[formObjects[i].fieldName].style.backgroundColor = '#f0f0f0'; 
          }
        }
      }else if(formObjects[i].isRequired==1){
        errorcount++;
        errors += errorcount + language['field'] + formObjects[i].desc + language['require'] + "\n";
        document.forms[formName].elements[formObjects[i].fieldName].style.borderColor = '#ff0000';
		document.forms[formName].elements[formObjects[i].fieldName].style.backgroundColor = '#f0f0f0'; 
      }
      break;
      case 'select':
      if(formObjects[i].isRequired==1){
	if(!valtoCheck){
	  errorcount++;
	  errors += errorcount + language['field'] + formObjects[i].desc + language['select'] + "\n";
	  document.forms[formName].elements[formObjects[i].fieldName].style.borderColor = '#ff0000';
	  document.forms[formName].elements[formObjects[i].fieldName].style.backgroundColor = '#f0f0f0'; 
	}  
      }
      default:					
      break;
    }
  }
}
if(errors != "") {
  alert(language["header"].concat("\n" + errors));
  //errors = "";
   if(button){
	button.disabled = false;
  }
  returnVal = false;
  return false;
}else{
  
  //Submit the form but return false to prevent the onSubmit firing another submission
  document.forms[formName].submit();
  
   try	{(document.getElementById("show").innerHTML)
	  document.getElementById("show").innerHTML="<table align=center><tr><td align=center><b>Please Wait...submiting form information</b></td></tr></table>"	 
  } 
  catch(errorObject){
	//No ICE Page Div on the page so don't error
	//alert(errorObject.description);
  }    
  
  returnVal = false;
  return false 
}
}
