﻿var promoHtml = null;

$(document).ready(function() {
    initialisePromo();
});

function initialisePromo() {
    getPromoHtml();

    $('a.promotion').click(showPromoDialog);
}

function getPromoHtml() {
    $.ajax({
        dataType: 'html',
        type: 'GET',
        url: '/promotion/promotion-dialog.aspx',
        success: function(html) {
            promoHtml = html;
        }
    });
}

function showPromoDialog() {
    var bodyBlur = $('.body-blur');

    if (bodyBlur.length == 0) {
        var doc = $(document);
        var wind = $(window);
        var body = $('body');

        body.append('<div class="body-blur"></div>');

        bodyBlur = $('.body-blur');

        bodyBlur.css('opacity', 0);
        bodyBlur.height(doc.height());

        bodyBlur.click(hidePromoDialog);

        bodyBlur.fadeTo('fast', 0.4);

        if (!promoHtml)
            getPromoHtml();

        if (promoHtml) {
            body.append(promoHtml);

            var iframe = $('#promotion-select-fix');
            var dialog = $('#promotion-dialog');
            var left = (doc.width() - dialog.width()) / 2;
            var top = (wind.height() - dialog.height()) / 2;

            if (typeof document.body.style.maxHeight == 'undefined') { // if IE 6
                top += wind.scrollTop();

                $('html').css('overflow', 'hidden');
            }

            if (left < 0) left = 0;
            if (top < 0) top = 0;

            iframe.css('left', left + 'px');
            iframe.css('top', top + 'px');
            iframe.css('height', dialog.height() + 'px');
            dialog.css('left', left + 'px');
            dialog.css('top', top + 'px');

            iframe.fadeIn('fast');
            dialog.fadeIn('fast');

            dialog.find('a.close').click(hidePromoDialog);
            dialog.find('a#enter').click(enter);
            dialog.find('a#invite').click(invite);
        }
    }
}

function hidePromoDialog() {
    var bodyBlur = $('.body-blur');

    if (bodyBlur.length > 0) {
        var iframe = $('#promotion-select-fix');
        var dialog = $('#promotion-dialog');

        iframe.fadeOut('fast');

        dialog.fadeOut('fast', function() {
            dialog.remove();
        });

        bodyBlur.fadeOut('fast', function() {
            bodyBlur.remove();
        });

        if (typeof document.body.style.maxHeight == 'undefined') { // if IE 6
            $('html').css('overflow', '');
        }
    }
}

function enter() {
    var dialog = $('#promotion-dialog');
    var enterFirstName = dialog.find('#enterFirstName');
    var enterLastName = dialog.find('#enterLastName');
    var enterEmail = dialog.find('#enterEmail');
    var enterOptIn = dialog.find('#enterOptIn');
    var enterAccept = dialog.find('#enterAccept');
    var inviteEntryId = dialog.find('#inviteEntryId');
    var enter = dialog.find('.enter');
    var invite = dialog.find('.invite');
    var error = dialog.find('.enter .error');

    $.ajax({
        cache: false,
        dataType: 'json',
        type: 'GET',
        url: '/promotion/promotion-enter.ashx',
        data: {
            enterFirstName: enterFirstName.val(),
            enterLastName: enterLastName.val(),
            enterEmail: enterEmail.val(),
            enterOptIn: enterOptIn.is(':checked'),
            enterAccept: enterAccept.is(':checked')
        },
        beforeSend: function(xmlHttpRequest) {
            if (xmlHttpRequest && xmlHttpRequest.overrideMimeType) {
                xmlHttpRequest.overrideMimeType("application/json;charset=UTF-8");
            }
        },
        success: function(data) {
            if (data.entryId > 0) {
                inviteEntryId.val(data.entryId)

                error.addClass('hidden');
                enter.addClass('hidden');
                invite.removeClass('hidden');
            } else {
                error.html(data.errorHtml);

                error.removeClass('hidden');
            }
        }
    });
}

function invite() {
    var dialog = $('#promotion-dialog');
    var inviteEntryId = dialog.find('#inviteEntryId');
    var inviteEmail = dialog.find('#inviteEmail');
    var error = dialog.find('.invite .error');

    $.ajax({
        cache: false,
        dataType: 'json',
        type: 'GET',
        url: '/promotion/promotion-invite.ashx',
        data: {
            inviteEntryId: inviteEntryId.val(),
            inviteEmail: inviteEmail.val()
        },
        beforeSend: function(xmlHttpRequest) {
            if (xmlHttpRequest && xmlHttpRequest.overrideMimeType) {
                xmlHttpRequest.overrideMimeType("application/json;charset=UTF-8");
            }
        },
        success: function(data) {
            if (data.inviteId > 0) {
                error.addClass('hidden');

                inviteEmail.val('');
            } else {
                error.html(data.errorHtml);

                error.removeClass('hidden');
            }
        }
    });
}
