function check(form,x)
{
    var message = ""
	var more_message = ""
	var showmsg = "no"
	x = x - 1
		for (var i = 0; i <= x; i++)
			{
	 			var messenger = form.elements[i].name
				messenger = messenger.substring(0, 5)
				var fieldname = form.elements[i].name
				fieldname = fieldname.substring(5)

					{
						if (messenger == "text_")
							{
								more_message = r_check(form,x,fieldname,i)
							}
						else if (messenger == "chil_")
							{
								more_message = child_check(form,x,fieldname,i)
							}
						else if (messenger == "numb_")
							{
								more_message = i_check(form,x,fieldname,i)
							}
						else if (messenger == "phon_")
							{
								more_message = p_check(form,x,fieldname,i)
							}
						else if (messenger == "emai_")
								{
									more_message = e_check(form,x,fieldname,i)
								}			
						else if (messenger == "file_")
							{
								more_message = f_check(form,x,fieldname,i)
							}
						else if (messenger == "imag_")
							{
								more_message = fi_check(form,x,fieldname,i)
							}
						if (messenger == "date_")
							{
								more_message = d_check(form,x,fieldname,i)
							}
						if (messenger == "depn_")
							{
								more_message = depending_check(form,x,fieldname,i)
							 if (more_message != "") {
				alert("The following form field(s) were incomplete or incorrect:\n\n" + more_message + "\n\n Please complete or correct the form and submit again.")
                return false;
							 }
							 		
							}
							 if (more_message != "")
	        {
									if (message == "")
										{
											message = more_message
											more_message=""
										}
									else
										{
			        message = message + "\n" + more_message
											more_message=""
										}
	        }
											
						if (message > "")
								{
										showmsg = "yes"
								}													
						}	
				}
			
		if (showmsg == "yes")
			{
				alert("The following form field(s) were incomplete or incorrect:\n\n" + message + "\n\n Please complete or correct the form and submit again.")
                return false;
			}
		else
			{   
 				//form.submit();
                return true;				
			}
		}

function p_check(form,x,fieldname,i)
	{
		for (var y = 0; y <= x; y++)
			{
				if (form.elements[y].name == fieldname)
				break
			}						
   if (form.elements[y].value != "") {		
	var msg_addition = ""
	var decimal = ""
	inputStr = form.elements[i-1].value.toString()
	if (inputStr == "")
		{
			msg_addition = form.elements[i].value
		}
	else
		{
//         	var phonePat = /^(\d{3})(\ ?|-?)(\d{2})\2(\d{2})$/;
	
		var phonePatCode = /^(\(?\d{3}\)?)(\ ?|-?)(\d{3})(\ ?|-?)(\d{2})(\ ?|-?)(\d{2})$/;
	
//			var matchArray = inputStr.match(phonePat); // is the format ok?
			var matchArray1 = inputStr.match(phonePatCode); // is the format ok?
	
	  if (matchArray1 == null) {
			msg_addition = form.elements[i].value
	   }

       }
		return(msg_addition)
	 }
	}	
		
function i_check(form,x,fieldname,i)
	{
		for (var y = 0; y <= x; y++)
			{
				if (form.elements[y].name == fieldname)
				break
			}						
  if (form.elements[y].value != "") {
	var msg_addition = ""
	var decimal = ""
	inputStr = form.elements[y].value.toString()
	if (inputStr == "")
		{
			msg_addition = form.elements[i].value
		}
	else
		{
			for (var c = 0; c < inputStr.length; c++)
				{
					var oneChar = inputStr.charAt(c)
					if (c == 0 && oneChar == "-" || oneChar == "."  && decimal == "")
							{
								if (oneChar == ".")
									{
										decimal = "yes"
									}
								continue
								
							}
								if (oneChar < "0" || oneChar > "9")
									{
										msg_addition = form.elements[i].value
									}
				}
		}
		return(msg_addition)
	 }
	}	
		
	function d_check(form,x,fieldname,i)
//date must be in MM/DD/YY format OR M/D/YY or a MIX of the two
 {
		for (var y = 0; y <= x; y++)
			{
				if (form.elements[y].name == fieldname)
				break;
			}		
      if (form.elements[y].value != "") {
		var msg_addition = "";
		var dateStr;
        var matchArray2 = new Array();
		dateStr = form.elements[y].value;
		var datePat2 = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
// 		alert("datePat2 = " + datePat2);
		// To require a 4 digit year entry, use this line instead:
//		var datePat4 = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

		matchArray2 = dateStr.match(datePat2); // is the format ok?
		if (matchArray2 == null)  {
		msg_addition = form.elements[i].value
		return(msg_addition)
		}
		month2 = matchArray2[1]; // parse date into variables
		day2 = matchArray2[3];
		year2 = matchArray2[4];
//		alert("Month " + month + " Year " + year + " doesn't have " + day + " days!");
		if (eval(parseInt(month2)) < 1 || eval(parseInt(month2)) > 12) { // check month range
//		alert("Month must be between 1 and 12.");
		msg_addition = form.elements[i].value
		}
		if (eval(parseInt(day2)) < 1 || eval(parseInt(day2)) > 31) {
//		alert("Day must be between 1 and 31.");

		msg_addition = form.elements[i].value;
		}
		if ((eval(parseInt(month2))==4 || eval(parseInt(month2))==6 || eval(parseInt(month2))==9 || eval(parseInt(month2))==11) && eval(parseInt(day2))==31) {
//		alert("Month "+month+" doesn't have 31 days!")
		msg_addition = form.elements[i].value;
		}
		if (eval(parseInt(month2)) == 2) { // check for february 29th
		var isleap2 = (eval(parseInt(year2)) % 4 == 0 && (eval(parseInt(year2)) % 100 != 0 || eval(parseInt(year2)) % 400 == 0));
		if ((eval(parseInt(day2))>29) || (eval(parseInt(day2))==29 && !isleap2)) {
//		alert("February " + year + " doesn't have " + day + " days!");				

		msg_addition = form.elements[i].value;
		   }
		}

		return(msg_addition)
	 }
	  else { msg_addition = ""; return(msg_addition) }
	}


	function depending_check(form,x,fieldname,i)
 {
        var fieldname_r = "w_" + fieldname;
		for (var y = 0; y <= x; y++)
			{
				if (form.elements[y].name == fieldname_r)
				break;
			}
     var element1_name = form.elements[y].name;
     var element1_value = form.elements[y].value;
     var element2_name = form.elements[y-1].name;
     var element2_value = form.elements[y-1].value;
		var depends1 = ""	
		var depends2 = ""	
		var depends3 = ""	
		var msg_addition = ""	
		depends1 = element1_name.substring(2);
        depends1_from = depends1.indexOf('_');
		depends1_name = depends1.substring(0,depends1_from);
		depends1_number = depends1.substring(depends1_from+1);
		depends1_value = form.elements[y].value;		

		for (var z = 0; z <= x; z++) {

				depends2 = form.elements[z].name;
				depends2 = depends2.substring(2);
		        depends2_from = depends2.indexOf('_');
				depends2_name = depends2.substring(0,depends2_from);
				depends2_number = depends2.substring(depends2_from + 1);
				depends2_value = "";
              
			    depends2_value =  form.elements[z].value;

              
  	      if ((form.elements[y-1].checked == true) && (depends2_number == depends1_number) && (form.elements[z-1].type != "radio") && (form.elements[z-1].type != "checkbox") && (form.elements[z-1].type != "hidden") && (form.elements[z-1].value == "") && (form.elements[y-1].name != form.elements[z-1].name) ) {
			    		msg_addition = form.elements[z].value	
					return(msg_addition)

  	      }
   	      if ((form.elements[y-1].checked == false) && (depends2_number == depends1_number) && (form.elements[z-1].type != "radio") && (form.elements[z-1].type != "checkbox") && (form.elements[z-1].type != "hidden") && (form.elements[z-1].value != "") && (form.elements[y-1].name != form.elements[z-1].name) ) {
	    			msg_addition = form.elements[z].value	
                	return(msg_addition)
	      }
	}

		return(msg_addition)
	}
 
function r_check(form,x,fieldname,i)
	{
		var msg_addition = ""
		new_fieldname = fieldname
		for (var y = 0; y <= x; y++)
			{

				if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == true)
					{
							msg_addition = ""
							break
					}
				else if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == false)
					{
						msg_addition = form.elements[i].value
					}

			else if (form.elements[y].type == "select-one")
							{
								var l = form.elements[y].selectedIndex
								if (form.elements[y].name == fieldname && form.elements[y].options[l].value != "")
									{
										msg_addition = ""
										break
									}
								else if (form.elements[y].name == fieldname && form.elements[y].options[l].value == "")
									{
										msg_addition = form.elements[i].value
									}
								}
		 else if (form.elements[y].name == fieldname && form.elements[y].value == "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one")
							{
			
								msg_addition = form.elements[i].value
								break
							}
				else if (form.elements[y].name == fieldname && form.elements[y].value != "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one")
							{
								msg_addition = ""

							}	
				}
			return(msg_addition)
		}
			

function e_check(form,x,fieldname,i)
	{
		for (var y = 0; y <= x; y++)
			{
				if (form.elements[y].name == fieldname)
				break
			}						
  if (form.elements[y].value != "") {
	var msg_addition = ""
	var ctrl = form.elements[i-1];
	var period = ".";
    var at = ctrl.value.indexOf ('@', 0);
    // var invalidChars = " /:,;()<>[]{}|?`!%=*^#";
	var invalidChars = /.+[!#$%^&*,"'\[\]{}?<>;\/ ].+/;
	var validEmail=/^\w+(.\w+)*@\w+(.\w+)+$/;
    var error = 0;
	error = 0
	var matchArray1 = form.elements[y].value.match(invalidChars); // is the format ok?
	if (matchArray1 != null) {	error = 1;  }
	if (!(validEmail.test(form.elements[y].value))) { error = 1; }
    if (error == 1) { msg_addition = form.elements[i].value; } else { msg_addition = ""; }
	return(msg_addition)
    }
	else { msg_addition = ""; return(msg_addition) }
	}

function f_check(form,x,fieldname,i)
	{
	for (var y = 0; y <= x; y++)
			{
				if (form.elements[y].name == fieldname)
				break
			}						
   var msg_addition = ""
   if (form.elements[y].value != "") {		
	var decimal = ""
	inputStr = form.elements[y].value.toString()
	if (inputStr == "")
		{
			msg_addition = form.elements[i].value
		}
	else
		{
	  var inputStr1 = new String(inputStr)
	  inputLen = inputStr1.length
	  lastSlash = inputStr1.lastIndexOf("\\")
	  inputStr1 = inputStr1.slice(lastSlash, inputLen)
	  var file_test = /.+[!@#$%^&*,"'\[\]{}?<>; ].+/;
	  var matchArray1 = inputStr1.match(file_test); // is the format ok?
	  if (matchArray1 != null) {
			msg_addition = form.elements[i].value
	    }
      }
	  return(msg_addition)
	 }
	else { return('') }
	}	

function fi_check(form,x,fieldname,i)
	{
	for (var y = 0; y <= x; y++)
			{
				if (form.elements[y].name == fieldname)
				break
			}						
   var msg_addition = ""
   if (form.elements[y].value != "") {		
	var decimal = ""
	inputStr = form.elements[y].value.toString()
	if (inputStr == "")
		{
			msg_addition = form.elements[i].value
		}
	else
		{
	  var image_test = /gif|jpg|pcx$/i;
	  var matchArray1 = inputStr.match(image_test); // is the format ok?
	  if (matchArray1 == null) {
			msg_addition = form.elements[i].value
	    }
      }
	  return(msg_addition)
	 }
	else { return('') }
	}	
	
function isInteger(sDate)
	{
		var new_msg = "true"
		inputStr = sDate.toString()
		for (var i = 0; i < inputStr.length; i++)
			{
			var oneChar = inputStr.charAt(i)			
			if ((oneChar < "0" || oneChar > "9") && oneChar != "/")
					{
						new_msg = "false"
					}
			}
		return (new_msg)
	}
	
function asc(each_char)
		{
		var n = 0
			var char_str = charSetStr()
			for (i = 0; i < char_str.length; i++)
				{
					if (each_char == char_str.substring(i, i+1))
						{
							break
						}
				}
			return i + 32
		}
		
		function charSetStr()
			{
				var str
 			str = ' !"#$%&' + "'" + '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
				return str
			}

function email_check(element1, element2)
	{
	var msg_addition = "";
	var ctrl = element1;
	var period = ".";
    var at = ctrl.value.indexOf ('@', 0)     
    var invalidChars = " /:,;()<>[]{}|?`!%=*^#"
    var error = 0;
	
    for (m=0; m<invalidChars.length; m++) {
        badChar = invalidChars.charAt(m)
        if (ctrl.value.indexOf(badChar,0) != -1) {
                        error = 1;
						break;
        }
    }

//    for (n=0; n<ctrl.value.length; n++) {
//        if (ctrl.value.charCodeAt(n) > 128) {
//                        error = 1;
//						break;
//        }
//    }

    for (l=0; l<ctrl.value.length; l++) {
        TestDot = ctrl.value.charAt(l)
		TestAt =  ctrl.value.indexOf('@', 0)
        if (( TestDot == '.') && ((l == 0 || l == ctrl.value.length-1 || ctrl.value.indexOf('.', l+1) == l+1) || (TestAt >= l-1 && TestAt <= l+1)))  {
                        error = 1;
						break;
        }
    }
    
if (ctrl.value == "" || at < 3 || ctrl.value.indexOf('\\', 0) != -1 || ctrl.value.indexOf('\"', 0) != -1 || ctrl.value.indexOf('\'', 0) != -1 || ctrl.value.indexOf('@', at+1) != -1 || error == 1)

                        error = 1;
																						
																else
                  {
	                   test = ctrl.value.indexOf('.', ctrl.value.indexOf('@', 0))
										 if (test != -1)
																					{
																						error = 0;
																					}
																				else
																				{
	                    	 error=1;
																				}
                  }
                if (error == 1)
																	{
               				msg_addition = element2.value
																	}
                else
                 {
								 		new_length = ctrl.value.length - test
              if (new_length == 4 || new_length == 3 || (new_length >= 5 && ctrl.value.indexOf('.', (test+1)) != -1))
																						{
																							msg_addition = ""
																						}
																					else
																							msg_addition = element2.value;
																	}
	return(msg_addition)
	}	

function child_check(form,x,fieldname,i)
 {
  var fieldname_r = "chil_" + fieldname;
  for (var y = 0; y <= x; y++)
  {
   if (form.elements[y].name == fieldname)
   break;
  }
  if ((form.elements[y-1].checked == true) && (form.elements[y].value == "")) {
   msg_addition = form.elements[y+1].value;
  }
  else {
  msg_addition = ""
  }
 return(msg_addition);
 }