function isEmpty(field) {
	return (field == null || field == undefined || !field.value.match("\\S"));
}

function isEmptyPhone(f1, f2, f3) {
	return (isEmpty(f1) && isEmpty(f2) && isEmpty(f3));
}
	
function checkText(field, message) {
	if (isEmpty(field)) {
		alert(message);
		field.focus();
		return false;
	}
	return true;
}

function checkNoText(field, message) {
	if (!isEmpty(field)) {
		alert(message);
		field.focus();
		return false;
	}
	return true;
}

function checkPhone(f1, f2, f3, message) {
	if (f1 == null || f2 == null || f3 == null || !f1.value.match("[0-9][0-9][0-9]") || !f2.value.match("[0-9][0-9][0-9]") || !f3.value.match("[0-9][0-9][0-9][0-9]")) {
		alert(message);
		f1.focus();
		return false;
	}
	return true;
}

function checkPhone(f1, f2, f3) {
	if (f1 == null || f2 == null || f3 == null || !f1.value.match("[0-9][0-9][0-9]") || !f2.value.match("[0-9][0-9][0-9]") || !f3.value.match("[0-9][0-9][0-9][0-9]")) {
		return false;
	}
	return true;
}
function checkEmail(field, message) {
	if (!field.value.match("^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\\-+)|([A-Za-z0-9]+\\.+)|([A-Za-z0-9]+\\++))*[A-Za-z0-9]+@((\\w+\\-+)|(\\w+\\.))*\\w{1,63}\\.[a-zA-Z]{2,6}$")) {
		alert(message);
		field.focus();
		return false;
	}
	return true;
}

function checkRadioTF(fieldT,fieldF,message)
{
	if(fieldT == null || fieldF == null) { alert(message); return false; }
	
	if(fieldT.checked || fieldF.checked) return true;
	
	alert(message);
	fieldT.focus();
	return false;
}

function checkRadio(field, message) {
	if (field == null) {
		alert(message);
		return false;
	}
	for (var i = 0; i < field.length; i++)
		if (field[i].checked)
			return true;
	alert(message);
	field[0].focus();
	return false;
}

function checkSelect(field, message) {
	if (valueOfSelect(field) == "") {
		alert(message);
		field.focus();
		return false;
	}
	return true;
}

function valueOfSelect(field) {
	return field.options[field.selectedIndex].value;
}

function valueOfRadio(field) {
	for (var i = 0; i < field.length; i++)
		if (field[i].checked)
			return field[i].value;
	return undefined;
}
function checkYear(value) {
/*	var field = document.getElementById(name);
	var currentYear = new Date();
	var check = false;
	
	if(field != null && field.value <= currentYear.getFullYear())
		check = true;
	
	return check;
	*/
	var currentYear = new Date();
	var check = false;	
	if(value != null && value <= currentYear.getFullYear())
		check = true;
	
	return check;	
}
function IsValidDate(Yr,Day,Mn){
    var DateVal = Mn + "/" + Day + "/" + Yr;
    var dt = new Date(DateVal);

    if(dt.getDate()!=Day){       
        return false;
        }
    else if(dt.getMonth()!=Mn-1){
    //this is for the purpose JavaScript starts the month from 0
        
        return false;
        }
    else if(dt.getFullYear()!=Yr){

        return false;
        }
        
    return true;
 }

function checkDate(field, required, message) {
	if (required && isEmpty(field)) {
		field.value = 'MM/DD/YYYY';
		alert(message);
		field.focus();
		return false;
	}
	else if (!required && isEmpty(field))
		return true;
	else if (!field.value.match("^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d$")) {
		alert(message);
		field.focus();
		return false;
	}
	else
	{		
		if(field.value.length == 10)
		{
			var str = field.value;
				if(!IsValidDate(str.substring(6),str.substring(3,5),str.substring(0,2)))
				{
					alert(message + ' Also check that the date exists, For Example: Feb 31 is not a valid date');
					return false;
				}			
		}
		else
		{
			alert(message);
			return false;
		}
	}
	return true;
}

function dateInFuture(field) {
	// assumes field.value checks out to be a date.	
	var dt = new Date();
	dt.setTime(Date.parse(field.value));
	var dtNow = new Date();
	return (dt > dtNow);
	
}

function checkNumber(field, minimum, maximum, message) {
	if (isEmpty(field)) {
		alert(message);
		field.focus();
		return false;
	}
	if (isNaN(parseInt(field.value))) {
		alert(message);
		field.focus();
		return false;
	}
	var n = parseInt(field.value);
	if (minimum != NaN && n < minimum) {
		alert(message);
		field.focus();
		return false;
	}
	if (maximum != NaN && n > maximum) {
		alert(message);
		field.focus();
		return false;
	}
	return true;
}

function defaultField(field, val) {
	if (isEmpty(field))
		field.value = val;
}

//This function removes non-numeric characters 
function removeNonNumeric(str) 
{ 
  str += ''; 
  var regex = /^\d|\.|-$/; 
  var out = ''; 
  for( var i = 0; i < str.length; i++ ) 
  { 
    if( regex.test( str.charAt(i) ) ){ 
      if( !( ( str.charAt(i) == '.' && out.indexOf( '.' ) != -1 ) ) ){ 
        out += str.charAt(i); 
      } 
    } 
  } 
  return out; 
}

function isNumber(name, message) {
	var field;
	field = document.getElementsByName(name);
	
	if (field != null && field[0].value != null) {
		field[0].value = removeNonNumeric(field[0].value);
		if( isNaN(field[0].value)) {
			alert(message);
			document.getElementById(name).focus();
			return false;
		}
	}
	return true;
}

//check to see if the user answered the form with the "compareStr" answer
function checkAnswered(form, variableID, compareStr) {
	var variable = document.forms[form].elements[variableID];

	var variableVal;
	var answeredYes = false;
	
	if (variable != null) {
		for(var i=0; i<variable.length; i++){
	
			switch(variable[i].type) {
				
				case "radio":
					if(variable[i].checked && variable[i].value==compareStr){
						answeredYes=true;
						//alert("variable" + variableID + " type:" + variable[i].type + " variable value:" + variable[i].value);
					}
					break;
				default:
					if(variable.value == compareStr) {
						answeredYes=true;
					}
				
			
			}
		}
	}
//	$("body").append(variableID + " " + answeredYes + "<br/>");		
	return answeredYes;
	

	/*	
	var variableVal="false";
	//alert("validation.js variableID: " + variableID + " variable: " + variable);	
	var variable;
	var i;
	variable = document.getElementById(variableID);
	alert("variable: " + variable);
	if(variable != null && variable.type == "radio") {
		alert(variable.type);
		for(i=0; i<variable.length; i++){
			if(variable[i].checked){
				alert("variable[i].value");
				variableVal = variable[i].value;
				}
		}
	}		
	alert("variableval: " + variableVal);
	if(variableVal!=null && variableVal==compareStr){
	alert("true");
		return true;
	}
	else{
		alert("false");
		return false;}
	
	var variable = document.forms[form].elements[variableID];
	var variableVal;
	alert(variableID);
	alert(variable);
	if(variable != null) {
		variableVal= variable.value;
		alert(variableVal);
		if(variableVal!=null && variableVal==compareStr) {
			return true;
		}
		else {
			return false; //answer doesn't match compareStr
		}
	}
	else
		return false; //question not answered
		*/
}

//check to see if user answered yes in the form
function checkAnsweredYes(form, variableID) {
	var compareStr = "true";
//	if(checkAnswered (form, variableID, compareStr))
//		alert("true");
//	else
	//	alert("false");
	return checkAnswered (form, variableID, compareStr);

}

//check to see if user answered no in the form
function checkAnsweredNo(form, variableID) {
	var compareStr = "false";
	
	return checkAnswered (form, variableID, compareStr);

}

//check to see if user answered "other" in the form
function checkAnsweredOther(form, variableID) {
	var compareStr = "Other";
	var variable = document.forms[form].elements[variableID];
	
	return checkAnswered (form, variableID, compareStr);

}
//check to see if user answered "other" in the form
function checkAnsweredAllOther(form, variableID) {
	var compareStr = "AllOther";
	
	return checkAnswered (form, variableID, compareStr);

}

//check to see if user has answered anything other than one particular response, compareStr
function checkNotAnswer(form, variableID, compareStr) {
	var variable = document.forms[form].elements[variableID];
	var answer;

	//if user has not selected parent question, subsequent questions are not required
	if (variable == null || variable.value == null || variable.value == "")
		answer= false;
	//else, return true (i.e. answer is required) if user answered parent question with compareStr
	//return false (i.e. answer is not required) if user did not answer parent q with compareStr
	else
		answer = !checkAnswered(form, variableID, compareStr);
	
	return answer;
}
//check to see if user has answered with a particular response
function checkAnswer(form, variableID, compareStr) {
	var variable = document.forms[form].elements[variableID];
	var answer;

	//if user has not selected parent question, subsequent questions are not required
	if (variable == null || variable.value == null || variable.value == "")
		answer= false;
	//else, return true (i.e. answer is required) if user answered parent question with compareStr
	//return false (i.e. answer is not required) if user did not answer parent q with compareStr
	else
		answer = checkAnswered(form, variableID, compareStr);
	
	return answer;
}


//check to see if at least one phone number was filled in
function checkAtLeastOnePhone() {
	var onePhone = true;
	var homePhone = document.getElementById('homePhone');
	var busPhone = document.getElementById('busPhone');
	var cellPhone = document.getElementById('cellPhone');

	if((homePhone == null || homePhone.value.length == 0) && 
	   (busPhone == null  || busPhone.value.length == 0) && 
	   (cellPhone== null || cellPhone.value.length == 0))
		onePhone = false;

	return onePhone;
}

