
function validate_ALL () {
   var errs = 0;
   if (!validate_name(document.getElementById('name'), 'name_error')) errs +=1;
   if (!validate_email(document.getElementById('email'), 'email_error')) errs +=1;
	 if (!validate_subject(document.getElementById('subject'), 'subject_error')) errs +=1;
 	 if (!validate_message(document.getElementById('message'), 'message_error')) errs +=1;
	 if (errs ==0){
				return true; //passed validation ok to send.
	 }
	 else {
		    alert('There are fields which need entering or correction before sending');
		    return false; 
		}				
}
function validate_ALL_emailFriends () {
   var errs = 0;
   if (!validate_name(document.getElementById('yourname'), 'yourname_error')) errs +=1;
   if (!validate_email(document.getElementById('youremail'), 'youremail_error')) errs +=1;
   if (!validate_name(document.getElementById('friendsname'), 'friendsname_error')) errs +=1;
   if (!validate_email(document.getElementById('friendsemail'), 'friendsemail_error')) errs +=1;
	 if (!validate_subject(document.getElementById('subject'), 'subject_error')) errs +=1;
	 if (errs ==0){
				return true; //passed validation ok to send.
	 }
	 else {
		    alert('There are fields which need entering or correction before sending');
		    return false; 
		}				
}
function validate_name(node, itemID) { //item validation
				 removeNode (itemID); //check and remove if there is error text for item.				
				 //regular expression to validate data against.
				 //allow upper and lower cases as well as ' and -.    \:\',-
				 var re = /^[\w\s\'\.-]+$/;
				 var str = node.value;
				 if (re.test(str))
				 		return true; //passed validation ok to send.
				 else {
		        addNode (itemID, "*Please enter name using characters A to Z only."); //failed validation return error message.
				    return false; 
				 }
}


function validate_email(node, itemID) { //item validation
				 removeNode (itemID); //check and remove if there is error text for item.				
				 //regular expression to validate data against.
				 //to allow addresses as my.name12@uk.mycompany-intl.com.
				 var re = /^([\w\.-]+@[a-zA-Z_\.-]+?\.[a-zA-Z\.]{2,6})$/;
				 var str = node.value;
				 if (re.test(str))
				 		return true; //passed validation ok to send.
				 else {
		        addNode (itemID, "*Please enter a valid address in the format as name@provider.ext"); //failed validation return error message.
				    return false; 
				 }
}


function validate_subject(node, itemID) { //item validation
				 removeNode (itemID); //check and remove if there is error text for item.				
				 //regular expression to validate data against.
				 //allow upper and lower cases as well as ' and -.
				 var re = /^[a-zA-Z0-9\s\:\',-?]+$/;
				 var str = node.value;
				 if (re.test(str))
				 		return true; //passed validation ok to send.
				 else {
		        addNode (itemID, "*Please enter a subject using characters A to Z only."); //failed validation return error message.
				    return false; 
				 }
}

function validate_message(node, itemID) { //item validation
				 removeNode (itemID); //check and remove if there is error text for item.				
				 //regular expression to validate data against.
				 //allow upper and lower cases as well as ' and -.
				 var re = /^[a-zA-Z0-9\(\)\,\.\+\-\=\*\/\#\s\;\'-?]+$/;
				 var str = node.value;
				 if (re.test(str))
				 		return true; //passed validation ok to send.
				 else {
		        addNode (itemID, "*Please enter your message."); //failed validation return error message.
				    return false; 
				 }
}
	
function removeNode (itemID) {		
				 //locate parent by ID of the node, if exists, to remove.		
				 var nodeID =document.getElementById(itemID);
				 //test if there is a child to the located parent. If so this will be the error text message
				 //and it needs to be removed.
			   if (nodeID.childNodes[0])				 
								 		nodeID.removeChild(nodeID.childNodes[0]);
}				

function addNode (itemID, errorText) {
				 //create a text node to hold error message.
				 var textErrorNode = document.createTextNode(errorText);
				 //locate parent node by ID to attach new text node to.
				 var myElement = document.getElementById(itemID);
				 //append the new child text node to the parent.
				 myElement.appendChild(textErrorNode);
}
	
