﻿EmailSignup = {

    setup: function() {
        EmailSignup.signupValidation();
        EmailSignup.waterMarkEmailInputText();

    },

    signUpToNewsLetter: function(emailAddress) {

        jQuery.ajax({
            url: "/holidays/Email/SubscribeToNewsLetter/" + emailAddress,
            type: "GET",
            traditional: true,
            dataType: "json",
            data: null,
            cache: false,
            success: EmailSignup.signupSuccess,
            error: function(e) { }
        });
    },

    signupSuccess: function(data) {
        if ($('#email-address') !== null && $('#email-address').val() !== '') {
            $("#email-signup-intro").hide();
            $("#email-signup-form").hide();
            $("#email-thank-you").show();
        }
    },

    waterMarkEmailInputText: function() {
        if ($('#email-address') !== null && $('#email-address').length) {
            $('#email-address').addClass('emailAddressText');
        }
    },

    signupValidation: function() {

        if ($('#email-signup-button') !== null && $('#email-signup-button').length) {

            $('#email-signup-button').click(function() {
                EmailSignup.clearErrorState();
                var hasError = false;

                var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

                var emailAddressVal = $('#email-address').val();

                if (emailAddressVal === '') {
                    EmailSignup.setErrorStateAndMessage("Please enter your email address");
                    hasError = true;
                } else if (!emailReg.test(emailAddressVal)) {
                    EmailSignup.setErrorStateAndMessage("Enter a valid email address.");
                    hasError = true;
                }

                if (hasError === true) {
                    return false;
                } else if (hasError === false) {
                    EmailSignup.signUpToNewsLetter(emailAddressVal);
                }
				
				return true;
            });
        }
    },

    clearErrorState: function() {
        $("#email-signup-fragment").removeClass("error");
        $("#email-signup-form .error-message").hide();
        $("#email-signup-form .error-message").html("");
    },

    setErrorStateAndMessage: function(errorMessage) {
        $("#email-signup-fragment").addClass("error");
        $("#email-signup-form .error-message").show();
        $("#email-signup-form .error-message").html(errorMessage);
    }

};

$(document).ready(function() {
    EmailSignup.setup();
});
