$(document).ready(function() {
    var label = $('#signup-label');
    var email = $('#id_email');
    var status = $('#email-status');
    var button = $('form a.btn');
    
    var sending = false;
    
    button.click(function() {
        if (!sending) {
            $('form').submit();
        } else {
            sending = true;
        }
        return false;
    });
    
    $('form').submit(function() {
        button.html('<span>Sending</span>');
        if (isValidEmail(email.val())) {
            var action = $('form').attr('action');
            var form_data = $("form").serialize();

            var success_func = function(data) {
                    if (data.success) {
                        $('form').fadeOut('fast', function() {
                                $('.learn-more .primary-cta').append('<p id="success-message">Thank you for signing up!</p>');
                                $('#success-message').show();
                            });
                    } else {
                        email.removeClass('success').addClass('error');
                        status.removeClass('success').addClass('error');

                        if ($('#error-message').text().length == 0) {
                            $('.learn-more .primary-cta').append('<p id="error-message">' + data.response.email[0] + '</p>'); }
                        button.html('<span>Submit</span>');
                    }
                };

            $.post(action, form_data, success_func, "json");
            
        } else {
    
            email.removeClass('success').addClass('error');
            status.removeClass('success').addClass('error');
    
            if ($('#error-message').text().length == 0) {
                $('.learn-more .primary-cta').append('<p id="error-message">The email address you entered is invalid.</p>'); }
            button.html('<span>Submit</span>');
        }
    
        return false;
    })
    
    function isValidEmail(emailAddress) {
        var pattern = new RegExp( /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/);
        return pattern.test(emailAddress);
    }
    
    function focused() {
        label.fadeOut('fast');
        email.animate({
            'backgroundColor': '#FFFEEF'
        }, 'fast');
    }
    
    function blurred() {
        if (email.val() == '') {
            label.fadeIn('fast');
            email.animate({
                'backgroundColor': '#fff'
            }, 'fast');
        }
    
        if (isValidEmail(email.val())) {
            status.removeClass('error');
            email.removeClass('error');
            $('#error-message').remove();
    
            status.toggleClass('success');
            email.toggleClass('success');
        } else {
            status.removeClass('success');
            email.removeClass('success');
        }
    }
    
    if (email.val() != '') {
        focused();
    }
    
    email.focus(function() {
        focused();
    })
    
    email.blur(function() {
        blurred();
    });
    
});
