var bSent;

function validateFields() {
	var frmEl = document.getElementById('cForm');
	var txtName = document.getElementById('txtName');
	var txtPhone = document.getElementById('txtPhone');
	var txtEmail = document.getElementById('txtEmail');
	var txtMessage = document.getElementById('txtMessage');
	
	var whiteSpace = /^[\s]+$/;
	var bFoundBlank = false;
	HideStatuses();
	
	if ( txtName.value == "" || whiteSpace.test(txtName.value) ) bFoundBlank = true;
	if ( txtPhone.value == "" || whiteSpace.test(txtPhone.value) ) bFoundBlank = true;
	if ( txtEmail.value !== "" && !whiteSpace.test(txtEmail.value) && !IsValidEmail(txtEmail.value) ) bFoundBlank = true;
	if ( txtMessage.value == "" || whiteSpace.test(txtMessage.value) ) bFoundBlank = true;
	
	if (bFoundBlank) {
		ShowInputError();
	} else {
		if ( IsValidPhone(txtPhone.value) ) {
			PrepareVars();
		} else {
			ShowMethodError();
		}
	}
}


function PrepareVars () {
	var success = document.getElementById('emailSuccess');
	var txtName = document.getElementById('txtName');
	var txtPhone = document.getElementById('txtPhone');
	var txtEmail = document.getElementById('txtEmail');
	var txtMessage = document.getElementById('txtMessage');
	
	ShowProgress();
	
	// convert (&, +, =) to string equivs. Needed so URL encoded POST won't choke.
	txtName = CleanUrlArg(txtName.value);
	txtPhone = CleanUrlArg(txtPhone.value);
	txtEmail = CleanUrlArg(txtEmail.value);
	txtMessage = CleanUrlArg(txtMessage.value);
	
	var args = "";
	args += "name=" + txtName;
	args += "&phone=" + txtPhone;
	args += "&email=" + txtEmail;
	args += "&message=" + txtMessage;
	
	ajaxFunction(args);
}



function HideStatuses() {
	var inputError = document.getElementById('inputError');
	var methodError = document.getElementById('methodError');
	var loadBar = document.getElementById('loadBar');
	var emailSuccess = document.getElementById('emailSuccess');
	var emailFailure = document.getElementById('emailFailure');
	inputError.style.display = "none";
	methodError.style.display = "none"
	loadBar.style.display = "none";
	emailSuccess.style.display = "none";
	emailFailure.style.display = "none";
}
function ShowInputError() {
	HideStatuses()
	var inputError = document.getElementById('inputError');
	inputError.style.display = "block";
}
function ShowMethodError() {
	HideStatuses()
	var method = document.getElementById('methodError');
	method.style.display = "block";
}
function ShowProgress() {
	HideStatuses()
	var loadBar = document.getElementById('loadBar');
	loadBar.style.display = "block";
	setTimeout("CheckIfSent()",6000);
}
function ShowSuccess() {
	HideStatuses()
	var success = document.getElementById('emailSuccess');
	success.style.display = "block";
}
function ShowFailure() {
	HideStatuses()
	var failure = document.getElementById('emailFailure');
	failure.style.display = "block";
}


function CheckIfSent() {
	if (bSent) {
		ShowSuccess();
	} else {
		ShowFailure();
	}
}
function IsValidPhone(str) {
	var stripped = str.replace(/[\(\)\.\-\ ]/g, '');    
	if ( str == "" || (isNaN(parseInt(stripped))) ) {
        return false;
    } else {
		if ( stripped.length == 7 || stripped.length == 10 ) return true;
	}
}

function IsValidEmail(str) {
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if(reg.test(str) == false) {
		return false;
	} else {
		return true;
	}
}

function CleanUrlArg(arg) {
	arg = arg.replace(/&/g,"**ampersand**");
	arg = arg.replace(/=/g,"**equal**");
	arg = arg.replace(/\+/g,"**plus**");
	arg = arg.replace(/\n/g,"**newline**");
	return arg;
}

function ajaxFunction(args) {
	var xmlHttp;
	// Firefox, Opera 8.0+, and Safari use XMLHttpRequest()
	// Internet Explorer uses ActiveXObject()
	try { xmlHttp=new XMLHttpRequest();
	} catch (e) {
		try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
					alert("Your browser does not support AJAX!");
					return false;
				}
		}
	}
	xmlHttp.onreadystatechange=function() {
		if(xmlHttp.readyState==4) {
			if ( xmlHttp.responseText == "SENT" ) {
				bSent = true;
				ShowSuccess();
			} else {
				bSent = false;
				var failure = document.getElementById('emailFailure');
				failure.innerHTML = xmlHttp.responseText;
				ShowFailure();
			}
		}
	}
	xmlHttp.open("GET","sendmsg.php?"+args,true);
	xmlHttp.send(null);
}