var whitespace = " \t\n\r";
var phoneNumberDelimiters = "()- ";
var digitsInUSPhoneNumber = 10;
var ZIPCodeDelimiters = "-";
var digitsInZIPCode1 = 5;
var digitsInZIPCode2 = 9;

function checknumber(x)
{
	var anum=/(^\d+$)|(^\d+\d+$)/
	if (anum.test(x))
		return true;
	else {
		return false;
	}
}

function checkThem(frm){
	if(!checked){
		for(i=0;i<frm.elements.length;i++){
    	     if(frm.elements[i].type=="checkbox") frm.elements[i].checked=true;
    	}
		checked=true;
	}
    else{
		for(i=0;i<frm.elements.length;i++){
	         if(frm.elements[i].type=="checkbox") frm.elements[i].checked=false;
    	}
		checked=false;
	}
}

var pop_error_message = true;

function checkEmailAddress(field) {
	if(!field)
		return true;

	var goodEmail = field.value.search(/^([-\w][-.\w]*)?[-\w]@([-!#\$%&*+\\\/=?\w^`{|}~]+\.)+[a-zA-Z]{2,6}$/gi);

	if (goodEmail!=-1) {
		if(isDigit(field.value.charAt(0))){
			if(pop_error_message)
        		alert("E-mail address is invalid! Please correct");
        	//field.focus();
        	//field.select();
           	return false;
		}
	   	return true;
	} else {
		if(pop_error_message)
        	alert("E-mail address is invalid! Please correct");
        //field.focus();
        //field.select();
        return false;
    }
}

function check_password_field(pwd){
	if(!pwd)
		return true;
		if (pwd.value.length<5 && pwd.value!="") {
			alert("Ensure that you have 5 characters in your password!")
			pwd.focus()
			return false
		}
		else{
 			for (i = 0; i < pwd.value.length; i++) {   
    			var c = pwd.value.charAt(i);
    			if (isWhitespace(c)){
      				alert("The required field Password can not contain spaces!");
      				pwd.focus();
      				return false;
    			}  
  			}			
		}
	return true		
}

function chkWhitespace(s)
{
	var i = 0;
	var c = s.value.charAt(i);
	if (isWhitespace(c)){
		alert("Whitespace not allowed");
		s.focus();
   		return true;
   	}  
	return false;
}

function check_zip_code_field(cnt, zip){
	if(!cnt || !zip)
	{
		alert("not zip");
		return true;
	}
	if (cnt.options[cnt.selectedIndex].value=="US") {
		if (zip.value.length!=5 && zip.value!="") {
			alert("Ensure that you have 5 digits in your zip code")
			zip.focus();
			return false;
		}
		else {
			for (i = 0; i < zip.value.length; i++) {
      			var c = zip.value.charAt(i);
			    if (!isDigit(c)) {
      				alert("The required field Zip allows only Numbers!");
      				zip.focus();
      				return false;
      			}
      		}		
    	}
	}else if (cnt.value=="CA") {
		if (zip.value.length!=6 && zip.value.length!=7 && zip.value!="") {
			alert("Ensure that you have 6 or 7 characters in your postal code")
			zip.focus();
			return false;
		}
	}
	return true;
}

function checkRequired(id) {
pop_error_message = false;
var errors = new Array();
var cnt, x, id_element, true_id;
	if(!requiredFields)
		return true;
	if(requiredFields.length == 0)
		return true;
	if(id != '' && id != undefined) {
		for(x = 0; x < requiredFields.length; x++)
			if(requiredFields[x][0] == id)
				id_element = requiredFields[x];
		true_id = ((id_element[2] && document.getElementById("_"+id))?"_":"")+id;
		if(document.getElementById(true_id))
			if(document.getElementById(true_id).value == '' && (document.getElementById(true_id).type == 'text' || document.getElementById(true_id).type == 'password'))
				errors[0] = id_element;
	} else {
		
		cnt = 0;
		//alert(requiredFields.length);
		for(x = 0; x < requiredFields.length; x++) {
			
			true_id = ((requiredFields[x][2] && document.getElementById("_"+requiredFields[x][0]))?"_":"")+requiredFields[x][0];
			
			if(requiredFields[x][4] != undefined && requiredFields[x][4] == false) {
				if((document.getElementById(true_id).value == ''  || check_space(document.getElementById(true_id))) && (document.getElementById(true_id).type == 'text' || document.getElementById(true_id).type == 'password' || document.getElementById(true_id).type == 'select-one' || document.getElementById(true_id).type == 'textarea')) {
					othercheck = false;	
				}
				else {
					othercheck = true;
				}	
				required = false;	
			}
			else {
				required = true;
				othercheck = true;	
			}
			//alert(x);
			
			
			if(document.getElementById(true_id))
				if((document.getElementById(true_id).value == ''  || check_space(document.getElementById(true_id))) && (document.getElementById(true_id).type == 'text' || document.getElementById(true_id).type == 'password' || document.getElementById(true_id).type == 'select-one' || document.getElementById(true_id).type == 'textarea') && required == true) {
					alert("The required field '"+requiredFields[x][1]+"' is empty!");
					try {
						document.getElementById(true_id).focus();	
						document.getElementById(true_id).select();
					}
					catch(ex) {
						
					}
					return false;
				}	
				else if(requiredFields[x][3] == "numeric" && (isNaN(document.getElementById(true_id).value) || document.getElementById(true_id).value <= 0) && othercheck == true){
					alert("The field '"+requiredFields[x][1]+"' must be numeric and greater than zero!");
					try {
						document.getElementById(true_id).focus();
						document.getElementById(true_id).select();
					}
					catch(ex) {
						
					}
					return false;
				}
				else if(requiredFields[x][3] == "allnumeric" && isNaN(document.getElementById(true_id).value) && othercheck == true){
					alert("The field '"+requiredFields[x][1]+"' must be numeric!");
					try {
						document.getElementById(true_id).focus();
						document.getElementById(true_id).select();
					}
					catch(ex) {
						
					}
					return false;
				}
				else if(requiredFields[x][3] == "numericwz" && (isNaN(document.getElementById(true_id).value) || document.getElementById(true_id).value < 0) && othercheck == true){
					alert("The field '"+requiredFields[x][1]+"' must be numeric and greater than or equal to zero.!");
					try {
						document.getElementById(true_id).focus();
						document.getElementById(true_id).select();	
					}
					catch(ex) {
						
					}
					return false;
				}
				else if(requiredFields[x][3] == "email" && !(checkEmailAddress(document.getElementById(true_id))) && othercheck == true){
					alert("The field '"+requiredFields[x][1]+"' must be valid email address!");	
					try {
						document.getElementById(true_id).focus();
						document.getElementById(true_id).select();	
					}
					catch(ex) {
						
					}
					return false;
				}
				else if(requiredFields[x][3] == "zip" && !(checkZIPCode(document.getElementById(true_id),false)) && othercheck == true){
					alert("The field '"+requiredFields[x][1]+"' must be a 5 or 9 digit U.S. ZIP Code (like 85016).");
					try {
						document.getElementById(true_id).focus();
						document.getElementById(true_id).select();	
					}
					catch(ex) {
						
					}
					return false;
				}
				else if(requiredFields[x][3] == "phone" && !(checkUSPhone(document.getElementById(true_id),false)) && othercheck == true){
					alert("The field '"+requiredFields[x][1]+"' must be a 10 digit U.S. phone number (like 602 264 5455).");
					try {
						document.getElementById(true_id).focus();
						document.getElementById(true_id).select();	
					}
					catch(ex) {
						
					}
					return false;
				}
							
		}
	}
    return true;
	
}

function check_space(flds){
    if(!flds)
		return true;
	var cnt=0;	
	for (i = 0; i < flds.value.length; i++) {
		var c = flds.value.charAt(i);
		if (isWhitespace(c)){
			cnt=cnt+1;
		}  
	}
	if(cnt==flds.value.length){
		return true;
	}	
	else {
		return false;				
	}	
}

function isAlphabetic (s,theField,txt) {
	var i;
  if (isEmpty(s)) {
    if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
    else return (isAlphabetic.arguments[1] == true);
  }  
  for (i = 0; i < s.length; i++) {   
    var c = s.charAt(i);
    if (!isLetter(c)){
      alert("The required field "+txt+" allows only alphabets!");
      theField.focus();
      return false;
    }  
  }
  return true;
}

function isLetter (c) {
  return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) || isWhitespace(c))
}

function isEmpty(s) {
  return ((s == null) || (s.length == 0))
}

function isDigit (c) {
  return ((c >= "0") && (c <= "9"))
}

function isInteger (s,theField,theFieldText) {
  var i;
  if (isEmpty(s)){
    if (isInteger.arguments.length == 1) return defaultEmptyOK;
    else return (isInteger.arguments[1] == true);
  }  
  alert(s);
  for (i = 0; i < s.length; i++) {
      var c = s.charAt(i);
      alert(c);
      if (!isDigit(c)) {
      	alert("The required field "+theFieldText+" allows only Numbers!");
      	theField.focus();
      	return false;
      }	
    }
  return true;
}

function isWhitespace (c) {
  if (whitespace.indexOf(c) == -1) return false;
	   return true;
}

function checklength(field,length)
{
	var alen = field.value;
	if(alen.length < 9)
	{
		alert("Property ID must be 9 character long");
		 field.focus();
		return false;
	}
	else
		return true;
}

function checkZIPCode (theField, emptyOK) {
  if (checkZIPCode.arguments.length == 1) emptyOK = defaultEmptyOK;
  if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  else {
    var normalizedZIP = stripCharsInBag(theField.value, ZIPCodeDelimiters)
    if (!isZIPCode(normalizedZIP, false)) 
      return false;
    else {
      theField.value = reformatZIPCode(normalizedZIP)
      return true;
    }
  }
}

function checkUSPhone (theField, emptyOK) {
  if (checkUSPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
  if ((emptyOK == true) && (isEmpty(theField.value))) return true;
  else {
    var normalizedPhone = stripCharsInBag(theField.value, phoneNumberDelimiters)
    if (!isUSPhoneNumber(normalizedPhone, false)) 
      return false;
    else {
      theField.value = reformatUSPhone(normalizedPhone)
      return true;
    }
  }
}

function stripCharsInBag (s, bag) {
  var i;
  var returnString = "";
  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if (bag.indexOf(c) == -1) returnString += c;
  }
  return returnString;
}

function isZIPCode (s) {
  if (isEmpty(s)) 
    if (isZIPCode.arguments.length == 1) return defaultEmptyOK;
    else return (isZIPCode.arguments[1] == true);
  return (isInteger1(s) && ((s.length == digitsInZIPCode1) || (s.length == digitsInZIPCode2)))
}

function isUSPhoneNumber (s) {
  if (isEmpty(s)) 
    if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
    else return (isUSPhoneNumber.arguments[1] == true);
  return (isInteger1(s) && s.length == digitsInUSPhoneNumber)
}

function reformatZIPCode (ZIPString) {
  if (ZIPString.length == 5) return ZIPString;
  else return (reformat (ZIPString, "", 5, "-", 4));
}

function reformatUSPhone (USPhone) {
  return (reformat (USPhone, "(", 3, ") ", 3, "-", 4))
}

function isInteger1 (s) {
  var i;
  if (isEmpty(s))
    if (isInteger.arguments.length == 1) return defaultEmptyOK;
    else return (isInteger.arguments[1] == true);
    for (i = 0; i < s.length; i++) {
      var c = s.charAt(i);
      if (!isDigit(c)) return false;
    }
  return true;
}


function reformat (s) {
  var arg;
  var sPos = 0;
  var resultString = "";
  for (var i = 1; i < reformat.arguments.length; i++) {
    arg = reformat.arguments[i];
    if (i % 2 == 1) resultString += arg;
    else {
      resultString += s.substring(sPos, sPos + arg);
      sPos += arg;
    }
  }
  return resultString;
}