﻿function newsletter(viewUrl, actionUrl) {
    $('#newsletter_notification').html("");

    $('#lightbox')
            .css({
                'height': $(document).height(),
                //reset opacity because IE loses it on open 
                'filter': 'alpha(opacity=60)'
            })
            .fadeIn('slow');
    $('#newsletter_form').fadeIn('slow');

    $('#newsletter_view').load(viewUrl);

    $('#newsletter_form').fadeIn('slow');
    return false;
}

function adjustLightbox() {
    $('#lightbox').css({ 'height': $(document).height() });
};

var resizeTimer = null;
$(window).bind('resize', function() {
    if (resizeTimer) clearTimeout(resizeTimer);
    resizeTimer = setTimeout(adjustLightbox, 100);
});

function delay(milliseconds) {
    $('body').animate({ opacity: 1.0 }, milliseconds)
}

function cancelNewsletter() {
    $('#lightbox').fadeOut('slow');
    $('#newsletter_form').fadeOut('slow');
    $('#newsletter_form input[type!=button]').val('');
    $('#newsletter_form input[type=checkbox]').each(function(i) {
        this.checked = false;
    });
    $('#newsletter_message').html('').css({ 'display': 'none' });

    $('#newsletter_notification').html("");

}

function showMessage(text) {
    $('#newsletter_notification').append('<div>' + text + '</div>');
}

function newsletterCallback(notification) {

    var SeverityType = { Information: 0, Warning: 1, Critical: 2 };
    var hasErrors = false;
    var messageCount = 0;

    // Clear messags
    $('#newsletter_notification').html('');

    // Check for AJAX errors
    if (notification == null) {
        showMessage("An network error has occurred. Please try again later.");
        messageCount++;
    }
    else {

        // Display error messages
        for (var i in notification) {
            messageCount++;

            var message = notification[i];
            var severity = message.Severity;

            showMessage(message.Text);

            if (severity == SeverityType.Critical || severity == SeverityType.Warning) {
                hasErrors = true;
            }
        }
    }

    // No errors so say thanks wait a moment and fade out
    if (!hasErrors) {
        showMessage("Thank you.");
        delay(2000);
        cancelNewsletter();
    }

}

function submitForm(url) {

    var data =
    {
        emailAddress: $('#emailAddress').val(),
        displayName: $('#displayName').val()
    };

    // Submit with callback
    try {
        $.getJSON(url, data, newsletterCallback);
    }
    catch (err) {
        newsletterCallback(null);
    }
}