//Various string-checking functions.

//Usage Example
//
//
//<SCRIPT language="JavaScript" src ="validate.js">
//</SCRIPT>
//
//<SCRIPT>
//function checkform(form) 
//{
//return (validateString(form.firstname, "first name") &&
//	validateString(form.lastname, "last name") &&
//	validateMemNum(form.membernum, "member number") &&
//	validateState(form.state) && 
//	validateZip(form.zip) &&
//	validatePledge(form.pledge))
//}
//</SCRIPT>
//
//<INPUT type = "submit" value = "Submit" onclick = "return checkform(this.form)">
//


function notNull(str) {
	if (str.length == 0 )
		return false
	else 
		return true
}

function notBlank(str) {
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) != " ")
			return true
	}
	return false
}

function isSize(str, size) {
	if (str.length == size) 
		return true
	else
		return false
}


//Validation functions for numerical data.

function isDigits(str) {
	var i
	for (i = 0; i < str.length; i++) {
		mychar = str.charAt(i)
		if (mychar < "0" || mychar > "9")
			return false
	}
	return true
}

function isNumber(str) {
	numdecs = 0
	for (i = 0; i < str.length; i++) {
		mychar = str.charAt(i)
		if ((mychar >= "0" && mychar <= "9") || mychar 
			== ".") {
			if (mychar == ".")
				numdecs++
		}
		else 
			return false
	}
	if (numdecs > 1)
		return false	
return true
}

function isInRange(str, num1, num2) {
	var i = parseInt(str)
	return((i >= num1) && (i <= num2))

}


//Function to strip all non-digits from a string.

function stripNonDigits(str) {
	var i
	var newstring = ""
	for (i = 0;  i < str.length; i++) {
		mychar = str.charAt(i)
		if (isDigits(mychar)) 
			newstring += mychar
	}
	return newstring
}

function stripChars(str, chars) {
	var i
	var newstring = ""
	for (i = 0;  i < str.length; i++) {
		mychar = str.charAt(i)
		if (chars.indexOf(mychar) == -1)
			newstring += mychar
	}
	return newstring
}



//Code to validate a string.

//Global variable set at start of script

var emptyString = " field is blank. Please enter a "

function validateString(myfield, s) {
	if (notNull(myfield.value)&& notBlank(myfield.value)) 
		return true
	else {
		myfield.focus()
		alert("The " + s + emptyString + s)
		return false
	}
}


//Functions for validating numerical input.
var notNumber = " field is not numeric. Please enter a numeric value in "
function validateNumber(myfield, s) {
       
	if (isNumber(myfield.value) && isInRange(myfield.value,0, 999999))
		return true

	else {
		myfield.focus()
		alert("The " + s + notNumber + s)
		return false
	}
}

function comparevalues(myfield1,s1,myfield2,s2)
{   
    
   if (validateNumber(myfield1, s1) && validateNumber(myfield2, s2) )
            {    
  
                if (parseInt(myfield1.value)>parseInt(myfield2.value))
                {
                    alert (myfield1+s1+myfield2+s2)
                    alert(s1 +  " must be less than" + s2)
                    return false
                }
                else
                return true
            }
    else
    return false        
}

function validateAmount(myfield) {
	if (notNull(myfield.value)) {
		newstring = stripChars(myfield.value, "$")
		if  (isNumber(newstring))
			return true
		else {
			myfield.focus()
			alert("Invalid amount. Please enter a valid dollar amount.")
		}
	}
	return false
}

//Code to validate state and ZIP input.

var STATECODES = "AL/AK/AZ/AR/CA/CO/CT/DE/DC/FL/GA/HI/ID/IL/IN/IA/KS/LA/ME/MD/MA/MI/MN/MS/MO/MT/NV/NH/NJ/NM/NY/NC/ND/OH/OK/OR/PA/PR/RI/SC/TN/TX/UT/VT/VA/WA/WV/WI/WY"

function isStateCode (str) {
	var newstring = str.toUpperCase()
	if (STATECODES.indexOf(newstring) != -1 && str.indexOf("../") == -1)
		return true
	else 
		return false
}

function validateState(myfield) {
	if (notNull(myfield.value) && isSize(myfield.value, 2) && isStateCode(myfield.value))
		return true
	else {
		myfield.focus()
		alert("Invalid state code. Please enter 2-letter state postal abbreviation.")
		return false
	}
}

function validateZip(myfield) {
	if (notNull(myfield.value)) {
		newstring = stripNonDigits(myfield.value)
		if (isSize(newstring,5) || isSize(newstring, 9)) 
			return true
	}
	myfield.focus()
	alert("Invalid zip code. Please enter 5-digit or 9-digit zip code.")
	return false
}

function validateEmail (myfield, s) {
	
	if(!validateString(myfield, s))
		return false
	var newstring = myfield.value
	if (newstring.indexOf("@") != -1 && newstring.indexOf(".") != -1 && newstring.charAt(0) != "@" && newstring.charAt(newstring.length) != ".")
		return true
	else 
	{ 
		myfield.focus()
		alert("Invalid email address. Please enter correct email address.")
		return false
	}
}

function validatePassword (password1, s1, password2, s2) {
	
	if(!validateString(password1, s1))
		return false
		
	if(!validateString(password2, s2))
		return false
	
	if (password1.value == password2.value)
		return true
	else
	{	
		password1.focus()
		alert("Your password does not match. Please enter same password twice")
		return false
	}
}


function validateList(mylist, s) {
	
	if (mylist.selectedIndex != 0 && mylist.selectedIndex != -1)
		return true
	else
	{	
		mylist.focus()
		  alert("The " + s + " has not been selected. Please select " + s+".")
		return false
	}
}
function validateList1(mylist, s) {
	
	if (mylist.selectedIndex != -1)
		return true
	else
	{	
		mylist.focus()
		  alert("The " + s + " has not been selected. Please select " + s)
		return false
	}
}

function validateRadios(myfield,s)
 { 
  var checked = false; 
      if(myfield.length)
	   {
			for ( var i = 0; i<myfield.length; i++) 
			    {
				 if (myfield[i].checked==true) 
				  checked = true; 
				 }
			  if (checked==false)
			   { 
			   alert("The " + s + " has not been selected. Please select " + s);
			   return false; 
			   } 
			   return true;  	
	   }
       else
	   {
	 		if (myfield.checked) 
		  		 return true;  
			else
				 { 
			      alert("The " + s + " has not been selected. Please select " + s);
			      return false; 
			     } 
	  }
		  
 
 } 


function validateCheckBox(myfield,s)
{

	var checked = false; 
			 if (myfield.checked) 
    		checked = true; 
			if (checked==false)
  			 { 
   				alert("The " + s + " has not been checked. Please check " + s);
   				return false; 
  			} 
  			return true; 
}




function validateCheckBoxes(myfield,s)
 { 
  var checked = false; 
  for (var i = 0; i < myfield.length; i++) 
  {
   if (myfield[i].checked) 
    		checked = true; 
	}
	
  if (checked==false)
   { 
   alert("No " + s + " has not been selected. Please select atleast one " + s);
   return false; 
  } 
  return true; 
 } 




function comparetimes(myfield1,myfield2)
{
value1=myfield1.value.split(":");
value2=myfield2.value.split(":");

var time1 =value1[0]; 
time1=parseInt(time1);
var time2 =value2[0]; 
time2=parseInt(time2);
var time3 =value1[1]; 
time3 =parseInt(time3);
var time4 =value2[1]; 
time4 =parseInt(time4);
//alert (time1);
//alert (time2);
//alert (time3);
//alert (time4);
		if (time1>time2)
		 { 
			alert('End time cannot be before Start time.'); 
			myfield2.focus();
			return false;
		} 
		
		if (time1==time2 && time3==time4)
		 { 
			alert('Start Time & End Time are equal.'); 
			myfield2.focus();
			return false;
		} 
		
			return true;
			
			
}



