// Set variables for the script
var foundError = false;
var filterText = /[(\[\]\`\\^\&\<\>)+]/;
var filterSpecial = /[(\*\(\)\[\]\+\/\?\:\;\"\`\~\\#\$\%\^\&\<\>)+]/;
var filterEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

var FORMCHECKING = {
    requiredfield : {
        textonly : function (entry) {
            // Validate that they used text only
            var value = $('#' + entry).val();
            // Check if the field is blank and then validate it
            if (value) {
                // Check for special characters
                if (!value.match(filterText)) {
                    FORMMESSAGING.success(entry);
                } else {
                    FORMMESSAGING.failed(entry, "No special characters please!");
                }
            } else {
                // Blank field
                FORMMESSAGING.failed(entry, "Please don't leave this field blank!");
            }
        },
        email : function (entry) {
            // Validate the e-mail address
            var value = $('#' + entry).val();
            // Check if the field is blank and then validate it
            if (value) {
                // Check if it fits the proper format
                if (value.match(filterEmail)) {
                    FORMMESSAGING.success(entry);
                } else {
                    FORMMESSAGING.failed(entry, "Proper e-mail format only!");
                }
            } else {
                // Blank field
                FORMMESSAGING.failed(entry, "Please don't leave this field blank");
            }
        },
        nospecial : function (entry) {
            // Validate that they used text only
            var value = $('#' + entry).val();
            // Check if the field is blank and then validate it
            if (value) {
                // Check for special characters
                if (!value.match(filterSpecial)) {
                    FORMMESSAGING.success(entry);
                } else {
                    FORMMESSAGING.failed(entry, "No special characters please!");
                }
            } else {
                // Blank field
                FORMMESSAGING.failed(entry, "Please don't leave this field blank!");
            }
        }
    },
    nonrequiredfield : function (entry) {
        // Basic validation for non-required fields
        var value = $('#' + entry).val();
        if (!value.match(filterText)) {
            FORMMESSAGING.success(entry);
        } else {
            FORMMESSAGING.failed(entry, "No special characters please!");
        }
    }
};

var FORMMESSAGING = {
    success : function (entry) {
        // Remove error classes
        $("#" + entry).removeClass("formHighlightError");
        $("#error_" + entry).html("");
        $("#error_" + entry).removeClass("formShowError");
    },
    failed : function (entry, message) {
        // Add error classes
        $("#" + entry).addClass("formHighlightError");
        $("#error_" + entry).html(message);
        $("#error_" + entry).addClass("formShowError");
        foundError = true;
    }
};

$(document).ready(function(){
    // They are submitting the contact form
    $("#contactForm").submit(function(){
        $(".contactFormSubmitError").css({"display" : "none"});
        foundError = false;
        // Check the fields
        FORMCHECKING.requiredfield.textonly("cf_fullName");
        FORMCHECKING.requiredfield.email("cf_emailAddress");
        FORMCHECKING.requiredfield.textonly("cf_message");
        if (foundError) {
            // Errors found, return false, nothing else gets done
            return false;
        } else {
            // No errors found, submit the form through ajax ($(this) = form)
            var formData = $(this).serialize();
            $.ajax({
                type: "POST",
                url: "/scripts/process-form.php",
                data: formData,
                success: function(returnMSG){
                    $("#contactForm").ajaxComplete(function(event, request, settings){
                        if(returnMSG != "fail") {
                            $(".contactFormSubmitSuccess").css({"display" : "block"});
                        } else {
                            $(".contactFormSubmitError").css({"display" : "block"});
                        }
                        $('html, body').animate({scrollTop:0}, 'slow');
                    });
                }
            });
            return false;
        }
    });
    
    // They clicked reset on the form
    $("input.contactFormReset").click(function() {
        $("#contactFormFields p input").removeClass("formHighlightError");
        $("#contactFormFields p textarea").removeClass("formHighlightError");
        $("#contactFormFields p label.contactFormError").html("");
        $("#contactFormFields p label.contactFormError").removeClass("formShowError");
        $("#contactForm .contactFormSubmitError").css({"display" : "none"});
    });
});
