﻿//REMEMBER  - Javascript is global. So make sure you use some kinda distinction when naming your controls. 
//          - btnSubmit on one control needs to be distinguished from another btnSubmit created on another control.
//          - This problem is apparent when you have two forms (with similarly named controls) created independantly
//            & loaded on the same page.


var ContactForm = function() { 

$(document).ready(function() {

    // Hide Notifivations
    $(".contact-submission-form #sendingMessage").hide();
    $(".contact-submission-form #confirmationMessage").hide();
    $(".contact-submission-form #errorMessage").hide();

    // set up the focus behavior handler for all form text boxes.
    $(".contact-submission-form .defaultText").focus(function(srcc) {
        if ($(this).val() == $(this)[0].title) {
            $(this).removeClass("defaultTextActive");
            $(this).val("");
        }
    });

    // set up the blur behavior handler for all form text boxes.
    $(".contact-submission-form .defaultText").blur(function() {
        if ($(this).val() == "") {
            $(this).addClass("defaultTextActive");
            $(this).val($(this)[0].title);
        }
    });

    // Blur all text boxes.
    $(".contact-submission-form .defaultText").blur();

    // Set up the click handler for the form button.
    $(".contact-submission-form #btnSendContactEmail").click(function() {       
        disableContactFormSubmit();
        var isContactFormValid = validateContactFormInput()
        if (isContactFormValid) {
            sendContactForm();
        } else {
            enableContactFormSubmit();
        }
    });

});

function validateContactFormInput() {
    var isContactFormValid = true;
    if (!validateContactFormFullName()) { isContactFormValid = false };
    if (!validateContactFormEmail()) { isContactFormValid = false };
    if (!validateContactFormSubject()) { isContactFormValid = false };
    if (!validateContactFormMessage()) { isContactFormValid = false };       
    return isContactFormValid;
}

function validateContactFormFullName() {
    var isContactFormValid = true;
    // validate full name.
    if ($(".contact-submission-form #txtFullName").attr("title") == $(".contact-submission-form #txtFullName").val() || IsEmpty($(".contact-submission-form #txtFullName").val())) {
        isContactFormValid = false;
        $(".contact-submission-form #FullNameValidator").html("Full name is a required field.");
        $(".contact-submission-form #FullNameValidator").slideDown("slow");
    } else {
    $(".contact-submission-form #FullNameValidator").hide();
    }
    return isContactFormValid;
}

function validateContactFormSubject() {
    var isContactFormValid = true;
    // validate full name.
    if ($(".contact-submission-form #txtSubject").attr("title") == $(".contact-submission-form #txtSubject").val() || IsEmpty($(".contact-submission-form #txtSubject").val())) {
        isContactFormValid = false;
        $(".contact-submission-form #SubjectValidator").html("Message subject is a required field.");
        $(".contact-submission-form #SubjectValidator").slideDown("slow");
    } else {
    $(".contact-submission-form #SubjectValidator").hide();
    }
    return isContactFormValid;
}

function validateContactFormEmail() {
    var isContactFormValid = true;
    // validate email address.
    if ($(".contact-submission-form #txtEmail").attr("title") == $(".contact-submission-form #txtEmail").val() || IsEmpty($(".contact-submission-form #txtEmail").val())) {
        isContactFormValid = false;
        $(".contact-submission-form #EmailValidator").html("Email is a required field.");
        $(".contact-submission-form #EmailValidator").slideDown("slow");
    } else {
    $(".contact-submission-form #EmailValidator").hide();
    }
     return isContactFormValid;
 }

 function validateContactFormMessage() {
     var isContactFormValid = true;
     // validate email address.
     if ($(".contact-submission-form #txtMessage").attr("title") == $(".contact-submission-form #txtMessage").val() || IsEmpty($(".contact-submission-form #txtMessage").val())) {
         isContactFormValid = false;
         $(".contact-submission-form #MessageValidator").html("Message is a required field.");
         $(".contact-submission-form #MessageValidator").slideDown("slow");
     } else {
     $(".contact-submission-form #MessageValidator").hide();
     }
     return isContactFormValid;
 }

function sendContactForm() {

    $(".contact-submission-form #sendingMessage").slideDown("slow");
    $(".contact-submission-form #confirmationMessage").hide();
    $(".contact-submission-form #errorMessage").hide();

    var fullName = $(".contact-submission-form #txtFullName").val();
    var emailAddress = $(".contact-submission-form #txtEmail").val();
    var website = $(".contact-submission-form #txtWebsite").val();
    var subject = $(".contact-submission-form #txtSubject").val();
    message = $(".contact-submission-form #txtMessage").val();
    if (website == "www.google.ca") {
        website = " ";
    }   
    
    $.ajax({
        type: "POST",
        url: "App_Services/Contact-Form.asmx/SendContactEmail",
        data: "{'fullName':'" + fullName + "','emailAddress':'" + emailAddress + "','website':'" + website + "','subject':'" + subject + "','message':'" + message + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success:
            function(msg) {
                if (msg.d == "Success") {

                    $(".contact-submission-form #confirmationMessage").slideDown("slow");
                    $(".contact-submission-form #sendingMessage").hide("slow");
                    resetContactFormFields();
                    enableContactFormSubmit();
                } else {

                $(".contact-submission-form #errorMessage").slideDown("slow");
                $(".contact-submission-form #sendingMessage").hide("slow");
                    enableContactFormSubmit();
                }
            },
        error: function(xhr, status, error) {
            // Display a generic error for now.
        $(".contact-submission-form #sendingMessage").hide("slow");
        $(".contact-submission-form #errorMessage").slideDown("slow");
        }
    });

   
}

function resetContactFormFields() {
    $($(".contact-submission-form #txtFullName")).val($($(".contact-submission-form #txtFullName"))[0].title);
    $($(".contact-submission-form #txtEmail")).val($($(".contact-submission-form #txtEmail"))[0].title)
    $($(".contact-submission-form #txtWebsite")).val($($(".contact-submission-form #txtWebsite"))[0].title);
    $($(".contact-submission-form #txtSubject")).val($($(".contact-submission-form #txtSubject"))[0].title);
    $($(".contact-submission-form #txtMessage")).val($($(".contact-submission-form #txtMessage"))[0].title);
    $(".contact-submission-form .defaultText").addClass("defaultTextActive");
}

function enableContactFormSubmit() {
    $(".contact-submission-form #btnSendContactEmail").removeAttr('disabled');
    $(".contact-submission-form #btnSendContactEmail").attr("value", "Send Email"); 
}

function disableContactFormSubmit() {
    $(".contact-submission-form #btnSendContactEmail").attr("disabled", "true");
    $(".contact-submission-form #btnSendContactEmail").attr("value", "Please Wait...");
}

function IsEmpty(String) {
    if ((String.trim().length == 0) ||
    (String.trim() == null)) {
        return true;
    }
    else { return false; }
}

} ();

String.prototype.trim = function() {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}
