
var txtEmail = null;
var txtName = null;
var txtSubject = null;
var txtMessage = null;
var btnSend = null;

var msgEmail = null;
var msgName = null;
var msgSubject = null;
var msgMessage = null;
var msgSend = null;

var postValid = false;
var emailValid = false;
var nameValid = false;
var subjectValid = false;
var messageValid = false;
var captchaValid = false;
function Init(){
    txtEmail    = document.getElementById('email');
    txtName     = document.getElementById('name');
    txtSubject  = document.getElementById('subject');
    txtMessage  = document.getElementById('message');
    btnSend     = document.getElementById('send');
    var jsInput = document.getElementById('js');
    jsInput.value = '1.0';
    
    msgEmail    = document.getElementById('msgEmail');
    msgName     = document.getElementById('msgName');
    msgSubject  = document.getElementById('msgSubject');
    msgMessage  = document.getElementById('msgMessage');
    msgSend     = document.getElementById('msgSend');
    checkAll();
}
function setPostValid(){
    postValid = (emailValid && nameValid && subjectValid && messageValid && captchaValid);
    if(postValid){
        SetMessage(msgSend, "The form can be sent.", "green");
    }else{
        SetMessage(msgSend, "There are errors on the form.", "red");
    }
}
function checkAll(){
    checkEmail();
    checkName();
    checkSubject();
    checkMessage();
    setPostValid();
}

function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
  } else {
    obj.addEventListener( type, fn, false );
  }
  obj = null;
}
function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, obj[type+fn] );
    obj[type+fn] = null;
  } else {
    obj.removeEventListener( type, fn, false );
  }
  obj = null;
}

function is_valid_email (email){
    return /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/.test(email);
}
function checkEmail(){
    if(is_valid_email(txtEmail.value)){
        SetMessage(msgEmail, "The email appears valid", "green");
        emailValid = true;
    }else{
        SetMessage(msgEmail, "The email appears invalid", "red");
        emailValid = false;
    }
    setPostValid();
}
function checkName(){
    if(txtName.value.length > 0){
        SetMessage(msgName, "Okay", "green");
        nameValid = true;
    }else{
        SetMessage(msgName, "Please enter a name", "red");
        nameValid = false;
    }
    setPostValid();
}
function checkSubject(){
    if(txtSubject.value.length > 0){
        SetMessage(msgSubject, "Okay", "green");
        subjectValid = true;
    }else{
        SetMessage(msgSubject, "Please enter a subject", "red");
        subjectValid = false;
    }
    setPostValid();
}
function checkMessage(){
    if(txtMessage.value.length > 0){
        SetMessage(msgMessage, "Okay", "green");
        messageValid = true;
    }else{
        SetMessage(msgMessage, "Please enter a message", "red");
        messageValid = false;
    }
    setPostValid();
}
function checkCaptcha(){
	challengeField = $("input#recaptcha_challenge_field").val();
	responseField = $("input#recaptcha_response_field").val();
	var html = $.ajax({
		type: "POST",
		url: "/resources/ajax.recaptcha.php",
		data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField,
		async: false
		}).responseText;

	if(html == "success") {
		//Add the Action to the Form
		//Indicate a Successful Captcha
		$("#msgCaptcha").html("Success!");
        $("#msgCaptcha").css("color","green");
		// Uncomment the following line in your application
		captchaValid = true;
	} else {
		$("#msgCaptcha").html("The security code does not match.");
        $("#msgCaptcha").css("color","red");
		Recaptcha.reload();
		captchaValid = false;
	}
}	

function checkPost(){
    checkCaptcha();
    setPostValid();
    if(!postValid){
        alert("There are errors on the form please correct them first.");
    }
    return postValid;
}
function SetMessage(msg, text, color){
    msg.style.color = color;
    msg.innerHTML = text;
}
