P.when(“jQuery”, “ready”).execute(function($) {

"use strict";

var $subscribeForms = $('.dp-subscribe-form');

$subscribeForms.each(function(){
    var $form = $(this);

    var $elems = {};
    $elems.emailInput = $form.find('.dp-subscribe-form-emailInput');
    $elems.submitBtn = $form.find('.dp-subscribe-form-sumbit');
    $elems.messageWrap = $form.find('.dp-subscribe-form-message');
    $elems.messageText = $elems.messageWrap.find('.dp-subscribe-form-message-text');
    $elems.failureMsg = $form.attr("data-invalid-email-msg");
    var formData = {};
    formData[$elems.emailInput.attr('name')] = $elems.emailInput.val();

    $elems.emailInput.keypress(function(e) {
        if(e.which == 13) {     //If keypressed was enter, trigger submit
            e.preventDefault();
            $elems.submitBtn.click();
        }
    });

    $elems.submitBtn.click(function(event){
        testEmail($elems.emailInput.val()) ? $form.submit() : updateMessage.call($elems, {type: "error", copy: $elems.failureMsg});
    });
})

function testEmail(email) {
    var testEmail = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i; // jshint ignore:line
    return testEmail.test(email);
}

function updateMessage(message) {

    if(message.type === "error") {
        this.messageWrap
            .removeClass('dp-subscribe-form-message--success')
            .addClass('dp-subscribe-form-message--error');

        this.messageText.html(message.copy);
    }

    else {
        this.messageWrap
            .removeClass('dp-subscribe-form-message--error')
            .addClass('dp-subscribe-form-message--success')

        this.messageText.html(message.copy);
        this.emailInput.prop("value", '');
    }
}

});