function validEmail(emailStr) {
  var result = false;
  
//  var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    var filter  = /^[A-Z0-9\._%-]+@[A-Z0-9\.-]+\.[A-Z]{2,4}(?:[,;][A-Z0-9\._%-]+@[A-Z0-9\.-]+\.[A-Z]{2,4})*$/i;
	if (filter.test(emailStr)) {
	  result = true;
	}

	return result;
}

function validRequired(formField,fieldLabel) {
  var result = true;
	
	if (formField.value == "") {
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.style.border = '1px red solid';
		fieldName =formField.name+'_alert';
		$(fieldName).style.display = '';
		formField.focus();
		formField.scrollIntoView(true);
		result = false;
	}else{
		formField.style.border = '';
		fieldName =formField.name+'_alert';
		if($(fieldName)){
			$(fieldName).className = 'fieldOK';
			$(fieldName).style.display = '';
			
		}
	}
	
	return result;
}

function allDigits(str) {
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset) {
	var result = true;

	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0) {
			result = false;
			break;
		}
	
	return result;
}

function validEmail2(formField,fieldLabel,required) {
	var result = true;
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	//if(result == true){
		if (result && !validEmail(formField.value)) {
			alert("Please enter a complete email address in the form: yourname@yourdomain.com");
			formField.style.border = '1px red solid';
			fieldName =formField.name+'_alert';
			$(fieldName).style.display = '';		
			formField.focus();
			formField.scrollIntoView(true);
			result = false;
			
		}else{
			
			formField.style.border = '';
			fieldName =formField.name+'_alert';
			if($(fieldName)){
				$(fieldName).className = 'fieldOK';
				$(fieldName).style.display = '';
				
			}		
		}
	//}
  return result;
}

function validNum(formField,fieldLabel,required) {
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result) {
 		if (!allDigits(formField.value)) {
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();
			formField.scrollIntoView(true);
			result = false;
		}
	} 
	
	return result;
}

function validInt(formField,fieldLabel,required) {
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result) {
 		var num = parseInt(formField.value,10);
 		if (isNaN(num)) {
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();
			formField.scrollIntoView(true);
			result = false;
		}
	} 
	
	return result;
}

function validDate(formField,fieldLabel,required) {
  // expects date in DD-MMM-YYYY format, e.g. 21-Jan-1975
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result) {
 		var elems = formField.value.split("-");
 		
 		result = (elems.length == 3); // should be three components
 		
 		if (result) {
 			var day = parseInt(elems[0],10);
			var month = elems[1];
 			var year = parseInt(elems[2],10);
			result = allDigits(elems[0]) && (day > 0) && (day < 32) && (elems[1].length == 3) && allDigits(elems[2]) && (elems[2].length == 4);
 		}
 		
 		if (!result) {
 			alert('Please enter a date in the format DD-MMM-YYYY for the "' + fieldLabel +'" field.');
			formField.focus();
			formField.scrollIntoView(true);
		}
	} 
	
	return result;
}

function matchConfirm(formFieldA, fieldLabelA, formFieldB, fieldLabelB, required) {
  var result = true;
  
  if (required && !validRequired(formFieldA,fieldLabelA))
		result = false;
		
	if (required && !validRequired(formFieldB,fieldLabelB))
		result = false;
		
	if (formFieldA.value!=formFieldB.value) {
	  alert('The value of the ' + fieldLabelB + ' field must match the value of the ' + fieldLabelA + ' field.');
		formFieldB.focus();
		formField.scrollIntoView(true);
	  result = false;
	}
	
	return result;
}