// JavaScript Document


/********************************************
 * This function will validate a standard form. It will
 * look for form names that start with r_ and validate that they
 * have a value and are not blank ('')
 ********************************************/
function validateForm() {
	var errorMsg = "";
	var elements;
	var elementCount = 0;
	
	/*********************
	 * Check if the field is Required
	 ********************/
	elements = getElementsByClass("formRequired");
	elementCount = elements.length;

	for (i = 0; i < elementCount; i++) {
		if (elements[i].type == "checkbox") {
			if (! elements[i].checked) {
				errorMsg += elements[i].title + " is not checked. \n";
			}
		}
		else if (elements[i].type == "radio") {
			var radioSelected = false;
			for (var i=0; i < elements[i].length; i++) {
   				if (elements[i].checked) {
					radioSelected = true;
				}
			}
			if (!radioSelected) {
				errorMsg += elements[i].title + " does not have a value selected. \n"
			}
		}
		else if (elements[i].value == "") {
			errorMsg += elements[i].title + " is empty. \n";
		}	// end of if (elements[i].value == "") 
	}	// end of for (i = 0; i < elementCount; i++) [REQUIRED Check]
	
	/*********************
	 * Check if the field contains only Alpha characters
	 ********************/
	elements = getElementsByClass("formAlpha");
	elementCount = elements.length;

	for (i = 0; i < elementCount; i++) {
	    if (( /[^a-zA-Z\.\,]/.test(elements[i].value)) && (elements[i].value != ""))  {
            errorMsg +=  elements[i].title + " contains non-alphabetic characters. \n";
		}	// end of if (( /[^a-zA-Z\.\,]/.test(elements[i].value)) && (elements[i].value != ""))
	}		// end of for (i = 0; i < elementCount; i++) [ALPHA Check]
	
	/*********************
	 * Check if the field contains only Alpha characters
	 ********************/
	elements = getElementsByClass("formNumeric");
	elementCount = elements.length;

	for (i = 0; i < elementCount; i++) {
		elements[i].value = elements[i].value.replace(/,/, "");	// remove commas from this element
	    if (/[^0-9\.]/.test(elements[i].value)) {
            errorMsg +=  elements[i].title + " contains non-numeric characters. \n";
		}	// end of if (/[^0-9\.]/.test(elements[i].value))
	}		// end of for (i = 0; i < elementCount; i++) [Numeric Check]

	
	/*********************
	 * Check if the field is valid Email
	 ********************/
	elements = getElementsByClass("formEmail");
	elementCount = elements.length;

	for (i = 0; i < elementCount; i++) {
		errorMsg += emailCheck(elements[i].value);
	}		// end of for (i = 0; i < elementCount; i++) [Numeric Check]

	
	/*********************
	 * Check if the field is checked
	 ********************/
	elements = getElementsByClass("formChecked");
	elementCount = elements.length;

	for (i = 0; i < elementCount; i++) {
		if (elements[i].checked == false) {
            errorMsg +=  elements[i].title + " has not been checked yet. \n";
		}	// end of if (elements[i].checked == false) {
	}		// end of for (i = 0; i < elementCount; i++) [Numeric Check]

	
	if (errorMsg == "") {
		return true;
	}
	else {
		alert(errorMsg);
		return false;
	}
	
}		// end of function validateForm() 


/*******************************************
 * Get all of the elements with a particular class name
 * 
 ******************************************/
function getElementsByClass(searchClass) {
	var classElements = new Array();
	var els = document.getElementsByTagName('*'); // use "*" for all elements
	var elsLen = els.length;
	var pattern = new RegExp("\\b"+searchClass+"\\b");
	for (i = 0, j = 0; i < elsLen; i++) {
 		if ( pattern.test(els[i].className) ) {
 			classElements[j] = els[i];
 			j++;
	 	}
	}
	return classElements;
}

// email checker
function emailCheck(str) {

		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		
		if (str.indexOf(at)==-1){
		   return "Invalid E-mail Address\n";
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return "Invalid E-mail Address\n";
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return "Invalid E-mail Address\n";
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return "Invalid E-mail Address\n";
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return "Invalid E-mail Address\n";
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return "Invalid E-mail Address\n";
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return "Invalid E-mail Address\n";
		 }

 		 return "";					
}		// end of function emailCheck(str)
