var req_fields = new Array();
var hints = new Array();

var error_replaces_intro = false;

var custom_error = false;

function add_req_field(fieldname, hint) {
	if (hint == null){  hint = '';  }	
	req_fields.push(fieldname);	
	hints.push(hint);	
}



function isEmpty(strfieldname, form, hint) {
	
	
	if (typeof(form[strfieldname].selectedIndex) != "undefined") {
		// for select element (dropdown list)
		
		if (form[strfieldname].selectedIndex > 0) {
			return false;
		} else {
			return true;
		}
		
		
	}	
	
	if (typeof(form[strfieldname].length) != "undefined")  {
		// for radio buttons
		
	    myOption = -1;
       for (i=form[strfieldname].length-1; i > -1; i--) {
         if (form[strfieldname][i].checked) {
            myOption = i; i = -1;
         }
       }
       if (myOption == -1) {
         return true;
       } else {
         return false;
	   }
		
	}
	
	
	
	if (typeof form[strfieldname].value != "undefined")  {
	// if not a set eg radio buttons
	
      strfield = form[strfieldname].value ;
	
      if (strfield == "" || strfield == null || strfield == hint)
      {
        return true;
      } else {
        return false;
	  }
	  
    }  
	
    return false;
}



//function to check valid email address
function isValidEmail(strEmail, valid_if_empty){
	if (valid_if_empty == null) { valid_if_empty = false; }
     var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
     var regex = new RegExp(emailReg);   
	 
    if (valid_if_empty && strEmail == '') {
	   return true
    } else if (regex.test(strEmail) == false)  {
       return false;
    } else {
       return true; 
    }
}


function validate(form) {
	
	
	var empty_req_fields = new Array(); // those fields which are empty
	var email_error = false; // if the email is invalid
	
	for(var i = 0; i < req_fields.length; i++) {
      if (isEmpty(req_fields[i], form, hints[i])){
		  empty_req_fields.push(req_fields[i]);
	  }
	}

	
	if (!isValidEmail(form.email.value, true)){
		email_error = "the email address is invalid";
	}
	
	// construct an error message
	if(empty_req_fields.length > 0 || email_error){
		
		if (custom_error) {
			
			error_output = custom_error;
			
		} else {
	
	    error_output = '<p class="error">';
		 
		if ((empty_req_fields.length) > 0) {
		
		   error_output += 'You forgot to enter your ';
		
		  for (var i = 0 ; i < empty_req_fields.length ; i++) {
		  
		    var field_title = displayName(empty_req_fields[i]);
		    //var field_title = empty_req_fields[i];
		
		    if (i < empty_req_fields.length - 2) {
		      error_output += field_title+", ";
		    } else if (i < empty_req_fields.length - 1) {
		      error_output += field_title+" and ";
		    } else {
		      error_output += field_title;
		    }
		  }
		 
		 }
		 
		 if (email_error) {
		   if (empty_req_fields.length > 0) {
		     error_output += ", and ";
		   }
		   error_output += email_error;
		 }
		 
		 error_output += ". Message not sent.";
		 
		error_output += '</p>';
		
		} // end if custom error
		
		document.getElementById('form_error').style.display = 'block';
	    document.getElementById('form_error').innerHTML = error_output;
		
		if (error_replaces_intro) {
			 document.getElementById('intro_msg').style.display = 'none';
		}

		
		return false;

	}else { 
	    return true;
	}


}

function displayName(field_name) {
	 return field_name.replace(/_/g, " ");
}


function attachOnfocusListener (elem_id) {

      var form_element = document.getElementById(elem_id);
      form_element.onfocus = function() {
		  var form_element = document.getElementById(elem_id);
          form_element.style.color = '#404040';
		if (form_element.tagName == "TEXTAREA") {
	      form_element.innerHTML = '';
		} else {
	      form_element.value = '';
		}
		form_element.onfocus = null;
	  }


}


function errorReplacesIntro(val) {
	error_replaces_intro = val;
}

function customErrorMessage(err_msg) {
	custom_error = err_msg;
	
}

