<script language="JavaScript">
<!--
function check(form,x)
{
	//If you would like to use this script please do not remove the next 4 lines
	script_name = "Form Validator ver 1.0"
	action =  "Checks Required, Integer and Date"
	copyright = "(c) 1998 - Art Lubin / Artswork"
	email = "perflunk@aol.com"
	var set_up_var = doall(script_name, copyright, email)
	var message = ""
	var more_message = ""
	var showmsg = "no"
	if (set_up_var == 5871)
	{
		x = x - 1
		for (var i = 0; i <= x; i++)
			{
				var messenger = form.elements[i].name
				messenger = messenger.substring(0, 2)
				var fieldname = form.elements[i].name
				fieldname = fieldname.substring(2)
					{
						if (messenger == "r_")
							{
								more_message = r_check(form,x,fieldname,i)
							}
						else if (messenger == "i_")
							{
								more_message = i_check(form,x,fieldname,i)
							}
						else if (messenger == "d_")
								{
									more_message = d_check(form,x,fieldname,i)
								}						
							 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.")
			}
		else
			{
				form.submit()
			}
		}
	else
		{
			alert ("The copyright information has been changed. \n In order to use this javascript please keep the copyright information intact. \n\n Script Name: Form Validator ver 1.0 \n Copyright: (c) 1998 - Art Lubin / Artswork \n Email: perflunk@aol.com")
		}
}	

function r_check(form,x,fieldname,i)
	{
		var msg_addition = ""
		for (var y = 0; y <= x; y++)
			{
				if (form.elements[y].name == fieldname && form.elements[y].value == "")
					{													
						msg_addition = form.elements[i].value
						break
					}
				else
					{
						msg_addition = ""
					}		
			}
			
			return(msg_addition)
		}

function i_check(form,x,fieldname,i)
	{
		for (var y = 0; y <= x; y++)
			{
				if (form.elements[y].name == fieldname)
				break
			}						
		
	var msg_addition = ""
	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 == "-")
							{
								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
			}		
			
		var msg_addition = ""	
		var sDate = form.elements[y].value
		var int_or_not = isInteger(form.elements[y].value)
		if (int_or_not == "true")
			{
				if ((!(form.elements[y].value.length >= 6)) || (!(form.elements[y].value.length <= 8)))
   		{
    		msg_addition = form.elements[i].value
   		}
  		else
   		{
					 var SlashlPos = form.elements[y].value.indexOf("/",0)
						if (SlashlPos > 0 && SlashlPos <= 2)
							{
								if (SlashlPos == 1)
									{
										if (form.elements[y].value.charAt(0) < 1 || form.elements[y].value.charAt(0) > 9)
											{
												msg_addition = form.elements[i].value
											}
										else
											{
												if ((form.elements[y].value.charAt(0) == 1 || form.elements[y].value.charAt(0) == 3 || form.elements[y].value.charAt(0) == 5 || form.elements[y].value.charAt(0) == 7 || form.elements[y].value.charAt(0) == 8) && ((form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == "/") || (form.elements[y].value.charAt(3) == "/" && form.elements[y].value.length >= 7) || (form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(2) == "/")))
													{ 
														msg_addition = form.elements[i].value
													}
												else if ((form.elements[y].value.charAt(0) == 1 || form.elements[y].value.charAt(0) == 3 || form.elements[y].value.charAt(0) == 5 || form.elements[y].value.charAt(0) == 7 || form.elements[y].value.charAt(0) == 8) && ((form.elements[y].value.charAt(2) >= 3 && form.elements[y].value.charAt(3) > 1) || (form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == 0) || (form.elements[y].value.charAt(1) == "/" && (form.elements[y].value.charAt(3) != "/" && form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/"))))
													{ 
														msg_addition = form.elements[i].value + "hi"
													}
												else if ((form.elements[y].value.charAt(0) == 1 || form.elements[y].value.charAt(0) == 3 || form.elements[y].value.charAt(0) == 5 || form.elements[y].value.charAt(0) == 7 || form.elements[y].value.charAt(0) == 8) && (((form.elements[y].value.charAt(2) > 3 && form.elements[y].value.charAt(3) != "/") || (((form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(4) == "/")) && ((form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))) || form.elements[y].value.charAt(5) == "/"))
													{
														msg_addition = form.elements[i].value
													}
												else
													{
														if ((form.elements[y].value.charAt(0) == 2 && ((form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == "/") || (form.elements[y].value.charAt(3) == "/" && form.elements[y].value.length >= 7) || (form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(2) == "/") || (form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == 0) || (form.elements[y].value.charAt(1) == "/" && (form.elements[y].value.charAt(3) != "/" && form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/")))))
															{ 
																msg_addition = form.elements[i].value
															}
														else if (form.elements[y].value.charAt(0) == 2 && ((form.elements[y].value.charAt(2) > 2 && form.elements[y].value.charAt(3) != "/") || (((form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(4) == "/") && ((form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))) || form.elements[y].value.charAt(5) == "/"))
															{ 
																msg_addition = form.elements[i].value
															}
														else
															{
																if ((form.elements[y].value.charAt(0) == 4 || form.elements[y].value.charAt(0) == 6 || form.elements[y].value.charAt(0) == 9) && ((form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == "/") || (form.elements[y].value.charAt(3) == "/" && form.elements[y].value.length >= 7) || (form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(2) == "/")))
																	{ 
																		msg_addition = form.elements[i].value
																	}
																else if ((form.elements[y].value.charAt(0) == 4 || form.elements[y].value.charAt(0) == 6 || form.elements[y].value.charAt(0) == 9) && ((form.elements[y].value.charAt(2) >= 3 && form.elements[y].value.charAt(3) > 0) || (form.elements[y].value.charAt(2) == 0 && form.elements[y].value.charAt(3) == 0) || (form.elements[y].value.charAt(1) == "/" && (form.elements[y].value.charAt(3) != "/" && form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/"))))
																	{ 
																		msg_addition = form.elements[i].value
																	}
																else if ((form.elements[y].value.charAt(0) == 4 || form.elements[y].value.charAt(0) == 6 || form.elements[y].value.charAt(0) == 9) && (((form.elements[y].value.charAt(2) > 3 && form.elements[y].value.charAt(3) != "/") || ((form.elements[y].value.charAt(1) == "/" && form.elements[y].value.charAt(4) == "/") && ((form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))) || form.elements[y].value.charAt(5) == "/"))
																	{
																		msg_addition = form.elements[i].value
																	}
															}
													}
											}
									}
								else
									{
										if (form.elements[y].value.charAt(0) > 1 || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) > 2) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 0))
											{
												msg_addition = form.elements[i].value
											}
										else
											{
												if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 1) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 3) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 5) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 7) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 8) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 0) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 2)) && ((form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == "/") || (form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(3) == "/") || (form.elements[y].value.charAt(2) == "/" && (form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/" && form.elements[y].value.charAt(7) != "/"))))
													{
														msg_addition = form.elements[i].value		
													}
												else if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 1) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 3) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 5) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 7) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 8) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 0) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 2)) && ((form.elements[y].value.charAt(3) >= 3 && form.elements[y].value.charAt(4) > 1) || (form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == 0) || form.elements[y].value.length < 7))
													{
														msg_addition = form.elements[i].value
													}
												else if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 1) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 3) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 5) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 7) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 8) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 0) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 2)) && ((form.elements[y].value.charAt(3) > 3 && form.elements[y].value.charAt(4) != "/")	|| ((form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(5) == "/" && form.elements[y].value.length == 7 || form.elements[y].value.charAt(6) == "/") || (form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(4) == "/" && (form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))))
													{
														msg_addition = form.elements[i].value
													}
												else
													{
														if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 2) && ((form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == "/") || (form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == 0)) || form.elements[y].value.length < 7) || (form.elements[y].value.charAt(2) == "/" && (form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/" && form.elements[y].value.charAt(7) != "/")))
															{
																msg_addition = form.elements[i].value
															}
														else if ((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 2) && ((form.elements[y].value.charAt(3) > 2 && form.elements[y].value.charAt(4) != "/") || ((form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(5) == "/" && form.elements[y].value.length == 7 || form.elements[y].value.charAt(6) == "/") || (form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(4) == "/" && (form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))))
															{
																msg_addition = form.elements[i].value
															}
														else
															{			
																if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 4) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 6) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 9) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 1)) && ((form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == "/") || (form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(3) == "/") || (form.elements[y].value.charAt(2) == "/" && (form.elements[y].value.charAt(4) != "/" && form.elements[y].value.charAt(5) != "/" && form.elements[y].value.charAt(6) != "/" && form.elements[y].value.charAt(7) != "/"))))
																	{
																		msg_addition = form.elements[i].value
																	}
																else if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 4) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 6) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 9) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 1)) && ((form.elements[y].value.charAt(3) >= 3 && form.elements[y].value.charAt(4) > 0) || (form.elements[y].value.charAt(3) == 0 && form.elements[y].value.charAt(4) == 0) || form.elements[y].value.length < 7))
																	{
																		msg_addition = form.elements[i].value
																	}
																else if (((form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 4) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 6) || (form.elements[y].value.charAt(0) == 0 && form.elements[y].value.charAt(1) == 9) || (form.elements[y].value.charAt(0) == 1 && form.elements[y].value.charAt(1) == 1)) && ((form.elements[y].value.charAt(3) > 3 && form.elements[y].value.charAt(4) != "/") || ((form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(5) == "/" && form.elements[y].value.length == 7 || form.elements[y].value.charAt(6) == "/") || (form.elements[y].value.charAt(2) == "/" && form.elements[y].value.charAt(4) == "/" && (form.elements[y].value.length == 6 || form.elements[y].value.length == 8)))))
																	{
																		msg_addition = form.elements[i].value
																	}
															}
													}		
											}
									}
							}
		    else
							{
								msg_addition = form.elements[i].value
							}
					}
			}
		else
			{
				msg_addition = form.elements[i].value
			}
		return(msg_addition)
	}
	
	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 doall(script_name, copyright, email)
	{
	var code = 0
	var test = script_name + copyright + email
	for (var a = 0; a < test.length; a++)
		{
		var each_char = test.charAt(a)
		var x = asc(each_char)
		code += x
		}
	return (code)
	}
	
	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
			}
	
//-->
</script>
<center><h1>More Forms Validation</h1></center>
<p>This script is more powerful than the one on the previous page (and is much longer as well). It can be used to check form input not only for all required fields being completed, but can also make certain that fields requiring number (integer) or date input have been filled in correctly.</p>
<p>The demonstration form below, when submitted, will take you to a page containing instructions on how to use the script, so I suggest you save the source code now. If you wish, you can reach the instructions page by clicking on the 'Next Page' button above, instead.</p>
<form action="validation2.htm">
<table width="575" border="0">
<tr><td>
<b>First Name:</b>
</td>
<td>
<input type=text name=fname>
<input type=hidden name="r_fname" value="First name is required">
</td><td><font size="-1">(required validation)</font></td></tr>
<tr><td>
<b>Last Name:</b>
</td>
<td>
<input type=text name=lname>
<input type=hidden name="r_lname" value="Last name is required">
</td><td><font size="-1">(required validation)</font></td></tr>
<tr><td>
<b>Address 1:</b>
</td>
<td>
<input type=text name="address1">
<input type="hidden" name="r_address1" value="Address is required">
</td><td><font size="-1">(required validation)</font></td></tr>
<tr><td>
<b>Address 2:</b>
</td>
<td>
<input type=text name="address2"> 
</td><td><font size="-1">(no validation)</font></td></tr>
<tr><td>
<b>What is your age:</b>
</td>
<td>
<input type="text" name="age">
<input type="hidden" name="r_age" value="Age is required">
<input type="hidden" name="i_age" value="Age must be an integer">
</td><td><font size="-1">(required and integer validation)</font></td></tr>
<tr><td>
<b>Years have you been scripting:</b>
</td>
<td>
<input type="text" name="scripting">
<input type="hidden" name="r_scripting" value="Years scripting required">
<input type="hidden" name="i_scripting" value="Years scripting must be an integer">
</td><td><font size="-1">(required and integer validation)</font></td></tr>
<tr><td>
<b>Insert the date:</b> <font size="-1">(mm/dd/yy)</font>
</td>
<td>
<input type="text" name="todays_dt">
<input type="hidden" name="r_todays_dt" value="Today's date is required">
<input type="hidden" name="d_todays_dt" value="The date is not valid or the format is incorrect. Please format mm/dd/yy.">
</td><td><font size="-1">(required and date validation)</font></td></tr>
<tr><td colspan=>
<input type="button" Value="Submit this form for validation" onclick="check(form,16)"></td><td><input type="reset"></td></tr>
</table>
</form>
