﻿// JScript File
<!--
//Global Variables

var ncr_haveerrors=0;
var ncr_msg="";
	function ClientValidate(source, arguments)
	{
		ncr_haveerrors=0;
		ncr_msg="";
		var msgnum = 0;		
		var inputTempArray = document.getElementsByTagName("input");
		for(var i=0; i<=inputTempArray.length-1; i++)
		{
			switch(inputTempArray[i].name)
			{
			case "user_email_address":
				var var_email_address=inputTempArray[i].value;
				var_email_address=InputReplace(var_email_address,"\u0022","`"); //double quotes
				var_email_address=InputReplace(var_email_address,"\u0027","`"); //single quotes 
				var_email_address=InputReplace(var_email_address,"\u005C","|"); //back slash
				inputTempArray[i].value = var_email_address;
				if (var_email_address==null || var_email_address=="")
				{
					ncr_haveerrors = 1;
					ncr_msg += "Please input your email address.\n";		
				}
				else
				{
				    isWLValidEmailAddress(var_email_address);	
				}
				break;
			case "user_firstname":
				var var_UserFirstNameField=inputTempArray[i].value;
				var_UserFirstNameField=InputReplace(var_UserFirstNameField,"\u0022","`"); //double quotes
				var_UserFirstNameField=InputReplace(var_UserFirstNameField,"\u0027","`"); //single quotes 
				var_UserFirstNameField=InputReplace(var_UserFirstNameField,"\u005C","|"); //back slash
				inputTempArray[i].value = var_UserFirstNameField;
				if (var_UserFirstNameField==null || var_UserFirstNameField=="")
				{
					ncr_haveerrors = 1;
					ncr_msg += "Please input your first name.\n";	
				}
				else
				{
					msgnum = 1;
					isValidUserInput(var_UserFirstNameField, msgnum);	
				}	
				break;	
			case "user_lastname":
				var var_UserLastNameField=inputTempArray[i].value;
				var_UserLastNameField=InputReplace(var_UserLastNameField,"\u0022","`"); //double quotes
				var_UserLastNameField=InputReplace(var_UserLastNameField,"\u0027","`"); //single quotes 
				var_UserLastNameField=InputReplace(var_UserLastNameField,"\u005C","|"); //back slash
				inputTempArray[i].value = var_UserLastNameField;
				if (var_UserLastNameField==null || var_UserLastNameField=="")
				{
					ncr_haveerrors = 1;
					ncr_msg += "Please input your last name.\n";		
				}
				else
				{
					msgnum = 3;
					isValidUserInput(var_UserLastNameField, msgnum);	
				}	
				break;	
			case "user_zipcode":
				var var_zipcodeField=inputTempArray[i].value;
				var_zipcodeField=InputReplace(var_zipcodeField,"\u0022","`"); //double quotes
				var_zipcodeField=InputReplace(var_zipcodeField,"\u0027","`"); //single quotes 
				var_zipcodeField=InputReplace(var_zipcodeField,"\u005C","|"); //back slash
				inputTempArray[i].value = var_zipcodeField;
				if (var_zipcodeField==null || var_zipcodeField=="")
				{
					ncr_haveerrors = 1;
					ncr_msg += "Please input a zipcode.\n";		
				}
				else
				{
					msgnum = 1;
					isValidNumbers(var_zipcodeField, msgnum);	
				}	
				break;
			case "user_comments":
				var var_user_comments=inputTempArray[i].value;
				if (var_user_comments != null || var_user_comments != "")
				{
					msgnum = 2;
					isValidUserInput(var_user_comments, msgnum);	
				}
				break;
			}
		}
		if (ncr_haveerrors == 1)
		{
			alert(ncr_msg);			
			arguments.IsValid = false;
		}
	}



	function InputReplace(argvalue, x, y) 
	{
		while (argvalue.indexOf(x) != -1) 
		{
			var leading = argvalue.substring(0, argvalue.indexOf(x));
			var trailing = argvalue.substring(argvalue.indexOf(x) + x.length, 
			argvalue.length);
			argvalue = leading + y + trailing;
		}
		return argvalue;
	}

	function isWLValidEmailAddress(emailStr)
	{
		var emailPat=/^(.+)@(.+)$/;
		var specialChars="\\(\\)<>@,&;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		if (emailStr==null || emailStr=="")
		{
			return true;
		}
	
		if (emailStr.substring(0,4)=="www." || emailStr.substring(0,4)=="WWW.")
		{
			ncr_msg += "The e-mail address you have entered is invalid.\nPlease remove the www. portion and try again.\n";
			ncr_haveerrors=1;
			return false;
		}
	
		var matchArray=emailStr.match(emailPat);
		if (matchArray==null)
		{
			ncr_msg += "The e-mail address you have entered is invalid.\n";
			ncr_haveerrors=1;
			return false;
		}
		var user=matchArray[1];
		var domain=matchArray[2];
	
		// See if "user" is valid 
		if (user.match(userPat)==null)
		{
			// user is not valid
			ncr_msg += "The e-mail address you have entered is invalid.\n";
			ncr_haveerrors=1;
			return false;
		}
	
		/* if the e-mail address is at an IP address (as opposed to a symbolic
		host name) make sure the IP address is valid. */
		var IPArray=domain.match(ipDomainPat);
		if (IPArray!=null)
		{
			// this is an IP address
			for (var i=1;i<=4;i++)
			{
				if (IPArray[i]>255)
				{
					ncr_msg += "The IP address of the e-mail address you have entered is invalid.\n";
					ncr_haveerrors=1;
					return false;
				}
			}
			return true;
		}
	
		// Domain is symbolic name
		var domainArray=domain.match(domainPat);
		if (domainArray==null)
		{
			ncr_msg +=  "The domain name of the e-mail address you have entered is invalid.\n";
			ncr_haveerrors=1;
			return false;
		}
	
		/* domain name seems valid,but now make sure that it ends in a
		three-letter word (like com,edu,gov) or a two-letter word,
		representing country (us,uk,nl),and that there's a hostname preceding 
		the domain or country. */
		
		var atomPat=new RegExp(atom,"g");
		var domArr=domain.match(atomPat);
		var len=domArr.length;
		if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3)
		{
			// the address must end in a two letter or three letter word.
			ncr_msg +=  "E-mail addresses must end in a three-letter domain,or two-letter country code.\n";
			ncr_haveerrors=1;
			return false;
		}
	
		// Make sure there's a host name preceding the domain.
		if (len<2)
		{
			ncr_msg += "The e-mail address you have entered is missing a hostname.\n";
			ncr_haveerrors=1;
			return false;
		}
		return true;
	}

	function isValidUserInput(field1, msgtype)
	{
	
		var valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ,.~`!@#$%^&*()_+-=~:;?|{}0123456789><[]";
		var ok="yes";
		var temp;
		for (var i=0;i<field1.length;i++)
		{
			temp = "" + field1.substring(i,i+1);
			if (valid.indexOf(temp)=="-1") ok="no";
		}
		if (ok=="no")
		{
			if (msgtype == 1)
			{
				ncr_msg += "User first name can not contain invalid characters.\n";
				ncr_haveerrors=1;
				return false;
			}	
			if (msgtype == 2)
			{
				ncr_msg += "Your comments may contain some invalid characters. Please try again.\n";
				ncr_haveerrors=1;
				return false;
			}	
			if (msgtype == 2)
			{
				ncr_msg += "User last name can not contain invalid characters.\n";
				ncr_haveerrors=1;
				return false;
			}	

		}
		else
		{
			return true;
		}
	}

	function isValidNumbers(field1, msgtype)
	{
		var valid="0123456789";
		var ok="yes";
		var temp;
		for (var i=0;i<field1.length;i++)
		{
			temp = "" + field1.substring(i,i+1);
			if (valid.indexOf(temp)=="-1") ok="no";
		}
		if (ok=="no")
		{
			if (msgtype == 1)
			{
				ncr_msg += "Zip code does not appear to be valid. Please try again.\n";
				ncr_haveerrors=1;
				return false;
			}	
		}
		else
		{
			return true;
		}
	}
	
  
// -->
