

$(function() {

    $("#newsletter-subscribe-button").click(function() {
        $("form.email-subscription").submit();
        return false;
    })

    $("form.email-subscription").submit(function() {

        var f$ = $(this);

        var email$ = $("[name='email']", f$);

        var email = email$.val();

        if (subscribeNewsletter(email)) {
            email$.val("");
        }

        return false;

    })

})

function unsubscribeConfirmed(email, secret, list) {

    if (!email||!secret) {
        alert("pffff...");
        return;
    }

    $.post("subscription.jsp", {
        action: "confirm-unsubscribe",
        email: email,
        secret: secret,
        list: list
    }, function(res) {
        if (res=="success") {
            notifyUnsubscribed();
        } else {
            alert("Your unsubscribe-request failed. Please try again.");
        }
    })
}

function unsubscribeFromNewsletter(email,secret,list) {

    var over$ = $("#overlay");

    over$.load("newsletterUnsubscribeOverlay.html", function() {

        $("[action='unsubscribe']", over$).click(function() {
            $.unblockUI({
                onUnblock:function() {
                    unsubscribeConfirmed(email,secret,list);
                }
            });

            return false;
        })

        overlay(over$, 0, 0, {
            left: "640px", background:"transparent", "border":"none"
        }, function() {
            location.href = "splash.jsp";
        });

    });

}

function subscribeNewsletter(email) {

    if (!email) {
        return false;
    }

    if (!validateEmailAddress(email)) {
        notifyBadData();
        return false;
    }

    $.post("subscription.jsp", {
        action: "subscribe",
        email: email
    }, function(res) {
        if (res=="success") {
            notifyEmailConfirm();
        } else {
            notifyBadData();
        }
    })

    return true;

}

function notifyUnsubscribed() {

    var over$ = $("#overlay");

    over$.load("newsletterUnsubscribedOverlay.html", function() {
        overlay(over$, 0, 0, {
            left: "640px", background:"transparent", "border":"none"
        }, function() {
            location.href = "splash.jsp";
        });
    });

}

function notifyBadData() {

    var over$ = $("#overlay");

    over$.load("newsletterBadDataOverlay.html", function() {
        overlay(over$, 0, 0, {
            left: "640px", background:"transparent", "border":"none"
        });
    });

}

function notifyEmailConfirm() {

    var over$ = $("#overlay");

    over$.load("newsletterConfirmEmailOverlay.html", function() {
        overlay(over$, 0, 0, {
            left: "640px", background:"transparent", "border":"none"
        });
    });

}

function newsletterSubscriptionGotConfirmed() {

    var over$ = $("#overlay");

    over$.load("newsletterSubscriptionGotConfirmedOverlay.html", function() {
        overlay(over$, 0, 0, {
            left: "640px", background:"transparent", "border":"none"
        }, function() {
            location.href = "splash.jsp";
        });
        
    });
}

function validateEmailAddress(email) {
    var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})$/;
    return (filter.test(email));
}
