﻿/*
* Mailing List Script
*/

//web service proxy
var mailingListProxy;

//fields
var subscriberNameInput;
var subscriberEmailInput;
var suppressSubscriptionInput;
var subscriptionButton;

//mailing list variables
var rootPath = "";
var reloadPage = false;

$(document).ready(
    function() {
        setupWebServiceProxy();
        cacheControls();
        $(".ui-button").hover(
	        function() { $(this).addClass("ui-state-hover"); },
		    function() { $(this).removeClass("ui-state-hover"); }
	    );
        subscriptionButton.click(subscriptionButtonClickHandler);
    }
);

function setupWebServiceProxy() {
    mailingListProxy = new CreativeSkidz.WebServices.ServiceProxy(rootPath + "services/EmailMailingListService.svc/");
}

function cacheControls() {
    subscriberNameInput = $("#subscriberNameInput");
    subscriberEmailInput = $("#subscriberEmailInput");
    suppressSubscriptionInput = $("#suppressSubscriptionInput");
    subscriptionButton = $("#subscriptionButton");
}

function subscriptionButtonClickHandler() {
    if (validSubscription()) {
        mailingListProxy.invoke("AddSubscriber",
            {
                name: subscriberNameInput.val(),
                emailAddress: subscriberEmailInput.val(),
                suppressConfirmation: suppressSubscription()
            },
            addSubscriberSuccess,
            addSubscriberFailure
        );
    }
    return false;
}
function addSubscriberSuccess(result) {
    var email = subscriberEmailInput.val();
    if (suppressSubscription())
        alert("New user subscribed to mailing list - " + email);
    else
        alert("Your Mailing List subscription was successful, please check your email for confirmation. - " + email);

    subscriberNameInput.val("");
    subscriberEmailInput.val("");
}
function addSubscriberFailure(errorMessage) {
    if (errorMessage && errorMessage.length > 0)
        alert("Error subscribing to email newsletter, please try again later: " + errorMessage);
}
function validSubscription() {
    var valid = true;
    
    subscriberNameInput.removeClass("error");
    subscriberEmailInput.removeClass("error");

    if (!validField(subscriberNameInput.val())) {
        subscriberNameInput.addClass("error");
        valid = false;
    }
    if (!validField(subscriberEmailInput.val()) || !validEmail(subscriberEmailInput.val())) {
        subscriberEmailInput.addClass("error");
        valid = false;
    }

    return valid;
}
function validField(fieldValue) {
    return fieldValue.length > 0;
}
function validEmail(fieldValue) {
    //contains ampersand and last period instance is after the ampersand
    return fieldValue.indexOf("@") > 0
        && fieldValue.lastIndexOf(".") > fieldValue.indexOf("@")
        && fieldValue.lastIndexOf(".") < (fieldValue.length - 2);
}
function suppressSubscription() {
    if (suppressSubscriptionInput) {
        if (suppressSubscriptionInput.val() == 1)
            return true;
    }
    return false;
}


function unsubscribe(email, reload) {
    if (confirm("Are you sure that you would like to unsubscribe: " + email)) {
        mailingListProxy.invoke("Unsubscribe",
            {
                emailAddress: email
            },
            unsubscribeSuccess,
            unsubscribeFailure
        );
        reloadPage = reload;
    }
    return false;
}
function unsubscribeSuccess(result) {
    alert("User successfully unsubscribed.");
    if (reloadPage) {
        location.reload(true);
        reloadPage = false;
    }
}
function unsubscribeFailure(errorMessage) {
    if (errorMessage && errorMessage.length > 0)
        alert("Error unsubscribing from email newsletter, please try again later: " + errorMessage);
}
