// JavaScript Document
function frm_val(form)
{
	var lg_il = "!#$%^&*()+=~@\\/<>,?:;\"{}[]_";
	var all_il = "$%^*+=~<>\{}[]_";
	var tel_nums = "0123456789";
	var alphanums = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\/-:;, ";
	var em_il = "!#$%^&*()+=\\/<>,?:;\"{}[]";
	var zip_acc = "1234567890- ";
	var fname_r = form.fname_r.value;
	var lname_r = form.lname_r.value;
	var address = form.address.value;
	var city = form.city.value;
	var zipcode = form.zipcode.value;
	var telarea = form.telarea.value;
	var telpre = form.telpre.value;
	var telnum = form.telnum.value;
	var email = form.email.value;
	
	if (form.contact[0].checked) {	var contact = 'yes';	}
	var location = form.location.value;
	var datetime = form.datetime.value;
	var narrative = form.narrative.value;
	
	if (!form.ctype[0].checked && !form.ctype[1].checked) { var ctype = 'unchecked' }
	var witness = form.witness.value;
	var fname_em = form.fname_em.value;
	var lname_em = form.lname_em.value;
	var badge = form.badge.value;
	var vehicle = form.vehicle.value;
	var agency = form.agency.value;
	var other = form.other.value; 
	
	// fname_r validation begin
	
	var v = -1;
	
	if (fname_r == '')
	{
		alert("You do not need to enter your last name. But we do require your first name");
		document.complaint.fname_r.focus();
		return false;
	}
	
	if (fname_r.length > 50)
	{
		alert("Your first name exceeds max length - 50 characters");
		document.complaint.fname_r.focus();
		return false;
	}
	
	
	for (var k=0; k<fname_r.length; k++)
	{
		var km = fname_r.charAt(k);
		
		if (lg_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("Your first name contains illegal characters - illegal characters are " + lg_il);
		document.complaint.fname_r.focus();
		return false;
	}
	
	// fname_r validation END
	
	// lname_r validation begin
	
	var v = -1;
	
	if (lname_r.length > 70)
	{
		alert("Your last name exceeds MAX length. Limit 70 characters");
		document.complaint.lname_r.focus();
		return false;
	}
	
	
	for (var k=0; k<lname_r.length; k++)
	{
		var km = lname_r.charAt(k);
		
		if (lg_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("Your last name contains illegal characters- illegal characters are " + lg_il);
		document.complaint.lname_r.focus();
		return false;
	}
	
	// lname_r validation END
	
	
	// address validation begin
	
	var v = -1;
	
	if (address.length > 120)
	{
		alert("Your address exceeds MAX length. Limit 100 characters");
		document.complaint.address.focus();
		return false;
	}
	
	
	for (var k=0; k<address.length; k++)
	{
		var km = address.charAt(k);
		
		if (all_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("Your address contains illegal characters- illegal characters are " + all_il);
		document.complaint.address.focus();
		return false;
	}
	
	// address validation END
	
	// city validation begin
	
	var v = -1;
	
	if (city.length > 60)
	{
		alert("Your city name exceeds MAX length. Limit 60 characters");
		document.complaint.city.focus();
		return false;
	}
	
	
	for (var k=0; k<city.length; k++)
	{
		var km = city.charAt(k);
		
		if (lg_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("Your city name contains illegal characters- illegal characters are " + lg_il);
		document.complaint.city.focus();
		return false;
	}
	
	// city validation END

	// zipcode validation begin
	
	var v = -1;
	
	if (zipcode.length > 25)
	{
		alert("Your zipcode exceeds MAX length. Limit 25 characters");
		document.complaint.zipcode.focus();
		return false;
	}
	
	
	for (var k=0; k<zipcode.length; k++)
	{
		var km = zipcode.charAt(k);
		
		if (zip_acc.indexOf(km) > -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("Your zipcode contains illegal characters - accepted characters " + zip_acc);
		document.complaint.zipcode.focus();
		return false;
	}
	
	// zipcode validation END
	
	// telarea validation BEGIN
	
	var y = -1;
	
	if ( telarea.length != '' && telarea.length != 3)
	{
		alert("Your US telephone area code  needs to be 3 digits");
		document.complaint.telarea.focus();
		return false;
	}
	
	for (var m=0; m<telarea.length; m++)
	{
		var mm = telarea.charAt(m);
		
		if (tel_nums.indexOf(mm) > -1)
		continue;
		y = 1; 
		break;
	}
	
	if ( y == 1)
	{
		alert("your telephone area code can only contain numbers");
		document.complaint.telarea.focus();
		return false;
	}
	
	// telarea validation END
	
	// telpre validation BEGIN
	
	var y = -1;
	
	if ( telpre.length != '' && telpre.length != 3)
	{
		alert("Your telephone prefix needs to be 3 digits");
		document.complaint.telpre.focus();
		return false;
	}
	
	for (var m=0; m<telpre.length; m++)
	{
		var mm = telpre.charAt(m);
		
		if (tel_nums.indexOf(mm) > -1)
		continue;
		y = 1; 
		break;
	}
	
	if ( y == 1)
	{
		alert("Your telephone prefix can only contain numbers");
		document.complaint.telpre.focus();
		return false;
	}
	
	// telpre validation END
	
	// telnum validation BEGIN
	
	var y = -1;
	
	if ( telnum.length != '' && telnum.length != 4)
	{
		alert("Your telephone number needs to be 4 digits");
		document.complaint.telnum.focus();
		return false;
	}
	
	for (var m=0; m<telnum.length; m++)
	{
		var mm = telnum.charAt(m);
		
		if (tel_nums.indexOf(mm) > -1)
		continue;
		y = 1; 
		break;
	}
	
	if ( y == 1)
	{
		alert("Your telephone number can only contain numbers");
		document.complaint.telnum.focus();
		return false;
	}
	
	// telnum validation END
	
	//email validation begin
	
	var v = -1;
		
	if (email.length > 80)
	{
		alert("Your email exceeds MAX length. Limit 80 characters");
		document.complaint.email.focus();
		return false;
	}
	
	
	for (var k=0; k<email.length; k++)
	{
		var km = email.charAt(k);
		
		if (em_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("Your email contains illegal characters");
		document.complaint.email.focus();
		return false;
	}
	
	if ( (email != '') &&  (email.indexOf('@') < 0 || email.indexOf('.') < 0)  )
	{
		alert("Your email address is not properly formed. Make sure you enter full email address");
		document.complaint.email.focus();
		return false;
	}
	
	 // email validation END 
	 
	 // contact check BEGIN
	 
	 if (contact == 'yes') 
	 {
		
		 if ( (telpre == '' || telnum == '') && email == '')
		{
			alert("You've indicated that you wish to be contacted. Please enter a telephone number or  email address so that we may contact you OR change form to DO NOT CONTACT");
			return false;	
		}
		 
	 } 

	// end contact check
	
	// BEGIN location validation 
	
	var v = -1;
	
	if (location.length > 100)
	{
		alert("The incident location exceeds MAX length. Limit 100 characters");
		document.complaint.location.focus();
		return false;
	}
	
	
	for (var k=0; k<location.length; k++)
	{
		var km = location.charAt(k);
		
		if (all_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("Incident location contains illegal characters- illegal characters are " + all_il);
		document.complaint.location.focus();
		return false;
	}
	
	
	// END location validation
	
	// BEGIN datetime validation 
	
	var v = -1;
	
	if (datetime.length > 100)
	{
		alert("The incident datetime exceeds MAX length. Limit 100 characters");
		document.complaint.datetime.focus();
		return false;
	}
		
	// END datetime validation
	
	// BEGIN narrative validation 
	
	var v = -1;
	
	if (narrative.length > 600)
	{
		alert("Narrative field exceeds MAX length. Limit 600 characters");
		document.complaint.narrative.focus();
		return false;
	}
	
	
	for (var k=0; k<narrative.length; k++)
	{
		var km = narrative.charAt(k);
		
		if (all_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("narrative field contains illegal characters- illegal characters are " + all_il);
		document.complaint.narrative.focus();
		return false;
	}
	// END narrative validation
	
	// BEGIN ctype validation 
	
	if (ctype == 'unchecked')
	{
		alert("Please select an incident information type: Compliment or Complaint")
		return false;
	}

	// END ctype validation 
	
	// BEGIN witness validation 
	
	var v = -1;
	
	if (witness.length > 255)
	{
		alert("witness field exceeds MAX length. Limit 255 characters");
		document.complaint.witness.focus();
		return false;
	}
	
	
	for (var k=0; k<witness.length; k++)
	{
		var km = witness.charAt(k);
		
		if (all_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("witness field contains illegal characters- illegal characters are " + all_il);
		document.complaint.witness.focus();
		return false;
	}
	// END witness validation
	
	// fname_em validation begin
	
	var v = -1;
	
	if (fname_em.length > 50)
	{
		alert("Officer/Employee first name exceeds max length - 50 characters");
		document.complaint.fname_em.focus();
		return false;
	}
	
	
	for (var k=0; k<fname_em.length; k++)
	{
		var km = fname_em.charAt(k);
		
		if (lg_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("Officer/Employee first name contains illegal characters - illegal characters are " + lg_il);
		document.complaint.fname_em.focus();
		return false;
	}
	
	// fname_em validation END
	
	// lname_em validation begin
	
	var v = -1;
	
	if (lname_em.length > 70)
	{
		alert("Officer/Employee exceeds MAX length. Limit 70 characters");
		document.complaint.lname_em.focus();
		return false;
	}
	
	
	for (var k=0; k<lname_em.length; k++)
	{
		var km = lname_em.charAt(k);
		
		if (lg_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("Officer/Employee contains illegal characters- illegal characters are " + lg_il);
		document.complaint.lname_em.focus();
		return false;
	}
	
	// lname_em validation END
	
	// BEGIN badge validation 
	
	var v = -1;
	
	if (badge.length > 75)
	{
		alert("badge field exceeds MAX length. Limit 100 characters");
		document.complaint.badge.focus();
		return false;
	}
	
	
	for (var k=0; k<badge.length; k++)
	{
		var km = badge.charAt(k);
		
		if (all_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("badge field contains illegal characters- illegal characters are " + all_il);
		document.complaint.badge.focus();
		return false;
	}
	// END badge validation
	
	// BEGIN vehicle validation 
	
	var v = -1;
	
	if (vehicle.length > 75)
	{
		alert("vehicle field exceeds MAX length. Limit 100 characters");
		document.complaint.vehicle.focus();
		return false;
	}
	
	
	for (var k=0; k<vehicle.length; k++)
	{
		var km = vehicle.charAt(k);
		
		if (all_il.indexOf(km) == -1)
		continue;
		v = 1; 
		break;
	}
	
	if ( v == 1)
	{
		alert("vehicle field contains illegal characters- illegal characters are " + all_il);
		document.complaint.vehicle.focus();
		return false;
	}
	// END vehicle validation
	

}