	function trimString (str) {
		str = this != window? this : str;
		return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
	}
	String.prototype.trim = trimString;

	function validateReview(){
		var frm = document.getElementById('reviewForm');
		var validated = true;
		
		if(frm.visitor.value.trim().length == 0){
			document.getElementById('error_visitor').style.display = "inline";
			validated = false;
		}else{
			document.getElementById('error_visitor').style.display = "none";
		}

		var email_pattern = /^[^@]+@[^@]+\.(([a-zA-Z]{2}\.[a-zA-Z]{2})|([a-zA-Z]{3}))$/i;
		if(!email_pattern.test(frm.visitormail.value.trim())){
			document.getElementById('error_visitormail').style.display = "inline";
			validated = false;
		}else{
			document.getElementById('error_visitormail').style.display = "none";
		}
		
		if(frm.visitorphone.value.trim().length == 0){
			document.getElementById('error_visitorphone').style.display = "inline";
			validated = false;
		}else{
			document.getElementById('error_visitorphone').style.display = "none";
		}

		if(frm.appname.value.trim().length == 0){
			document.getElementById('error_appname').style.display = "inline";
			validated = false;
		}else{
			document.getElementById('error_appname').style.display = "none";
		}

		if(frm.notes.value.trim().length == 0){
			document.getElementById('error_notes').style.display = "inline";
			validated = false;
		}else{
			document.getElementById('error_notes').style.display = "none";
		}

		if(frm.appstorelink.value.trim().length == 0){
			document.getElementById('error_appstorelink').style.display = "inline";
			validated = false;
		}else{
			document.getElementById('error_appstorelink').style.display = "none";
		}

		if(validated == false){
			document.getElementById('errorMsg').style.display = "block";
			return false;
		}
		return true;
	}