/**
* TRIM WHITESPACES FROM BEGINNING OR ENDING OF STRING 
*/
function trim(str) {
	var str = str.replace(/^\s\s*/, ''),
		ws = /\s/,
		i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}
/**
* CHECK IF STRING IS EMPTY OR HAS NO VALUE 
*/
 function empty(mixed_var) {
    var key;
    
    if (mixed_var === ""
        || mixed_var === 0
        || mixed_var === "0"
        || mixed_var === null
        || mixed_var === false
        || mixed_var === undefined
    ){
        return true;
    }
    if (typeof mixed_var == 'object') {
        for (key in mixed_var) {
            if (typeof mixed_var[key] !== 'function' ) {
              return false;
            }
        }
        return true;
    }
    return false;
}
/**
* CALLED FROM  validateForm() TO CHECK IF A STRING HAS NO VALUE 
*/
function checkEmpty(obj) {
   var error = 0;
	var theField = document.getElementById(obj);	
		if(empty(trim(theField.value))) {
      	theField.parentNode.className = 'formError';
      	error = 1;
   	}else{
			if(theField.parentNode.className == "formError") {
				theField.parentNode.className = "";
			}else {
				theField.parentNode.className = theField.parentNode.className;
			}
      	
   	}
	 
   return error;
}

function checkSingle(formName, field){
	var error = 0;
	var checked = 0;
	if(formName.elements[field.name].checked == true){
		checked++;
	}else{
		error++;
	}
	if(checked > 0){
		field.parentNode.parentNode.parentNode.className = "";
	}else{
		field.parentNode.parentNode.parentNode.className = "formError";
	}
}

function checkGroup(formName, field){
	var error = 0;
	var checked = 0;

	var fieldName = field.name.replace(/\[\w+\]/,"" )
	for(var i=0; i<formName.elements[fieldName].length ; i++){ 
		if(formName.elements[fieldName][i].checked == true){
			checked++;
		}
	if(checked == 0) {
		field.parentNode.parentNode.parentNode.className = "formError";
		error = 1;
	}else{
		field.parentNode.parentNode.parentNode.className = "";
	}
}
	return error;
}
/**  
* CALLED FROM THE FORM IN AN onSubmit to check the form for empty values 
*/
function validateForm(obj, requiredFields) {
   var errors = 0;
  	for(var i=0; i < requiredFields.length; i++){
		var field = document.getElementById(requiredFields[i]);
		var fieldName = requiredFields[i].replace(/\[\w+\]/,"" )
			if(field.type == 'radio' || field.type == 'checkbox' ){
				if(obj.elements[fieldName].length > 0){ 
					errors += checkGroup(obj, field);
				}else{				
					errors += checkSingle(obj, field);
				}
			 }else{
				errors += checkEmpty(requiredFields[i]);
			 }	 
   }
	
	if(errors > 0){
		scrollTo(0,0);
		alert('There are errors that need to be corrected. They have been highlighted for you.');
     return false;
   }else{
      return true;
   }	
}

