﻿
var modalDialog = {

    visible: false,
    width: 300,
    subscriptionData: null,
    subscriptionDataType: null,
    toggleVisibility: function(contentId) {
        if (!this.visible) {

            $("#" + contentId).show()

            $(".modal-overlay").show();
            $(".modal-wrapper").show();

            $(".modal-wrapper").css(
                {
                    width: this.width + "px",
                    marginLeft: ((this.width / 2) * -1) + "px",
                    marginTop: (($(".modal-wrapper").height() / 2) * -1) + "px"
                });

            this.visible = true;
        }
        else {

            $(".validation-container").hide();
            $(".modal-content-container").hide();
            $(".modal-overlay").hide();
            $(".modal-wrapper").hide();

            this.visible = false;
        }
    },
    submitSubscribe: function(emailField) {

        var emailValid = true;
        var emailRegex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        var xOffset = 0;
        var yOffset = 42;

        if ($(emailField).val() == "" || !emailRegex.test($(emailField).val())) {

            emailValid = false;
            $(".validation-container").show();
            $(".validation-container")
                    .css(
                    {
                        "top": $(emailField).position().top + yOffset,
                        "left": $(emailField).position().left + xOffset
                    });
        }
        else {

            emailValid = true;
            $(".validation-container").hide();
        }

        if (emailValid) {

            $(".modal-content-container").hide();
            $(".modal-loading").show()

            PageMethods.AddSubscriptionDetail($(emailField).val(), this.subscriptionDataType, this.subscriptionData, this.AddSubscriptionDetail_Added, this.AddSubscriptionDetail_Added, $(emailField).val());
        }
    },
    deleteSubscription: function(subscriptionId, row) {

        $(row).find("td").find(".subscription-name-container").css("background-image", "url(/images/subscription-delete-loader.gif)");
        PageMethods.DeleteSubscriptionDetail(subscriptionId, this.DeleteSubscriptionDetail_Deleted, this.DeleteSubscriptionDetail_Error, row);
    },
    resendConfirmation: function() {
        $(".resend-tooltip-header").hide();
        $(".resend-tooltip-description").hide();
        $(".resend-tooltip-loading").show();
        PageMethods.SendConfirmationEmail(subscriptionUser, this.SendConfirmationEmail_Sent, this.SendConfirmationEmail_Error);
    },
    AddSubscriptionDetail_Added: function(result, user) {

        $(".modal-loading").hide()

        CreateSubscriptionCookie(user);

        $("#SubManagerLink").html("Manage My Subscriptions");
        $("#SubManagerLink").unbind("click")
        $("#SubManagerLink").click(function() {
            modalDialog.subscriptionData = null;
            modalDialog.subscriptionDataType = null;
            modalDialog.toggleVisibility("divSubscriptionManagement");
        });
        modalDialog.width = 400;

        subscriptionUser = user;
        $("#SubscriptionUser").html(user);

        if (!result.IsActive) {
            $(".confirmed-link").html("Not confirmed");
            $(".description").html("You've been successfully subscribed! To start receiving your subscriptions, we need you to confirm your email address by following the instructions in your confirmation email.");
        }

        $("#divSubscriptionManagement").show()
        $(".modal-wrapper").css(
                {
                    width: modalDialog.width + "px",
                    marginLeft: ((modalDialog.width / 2) * -1) + "px",
                    marginTop: (($(".modal-wrapper").height() / 2) * -1) + "px"
                });

        modalDialog.addRows(result);

        userIsSubscribed = true;
    },
    addRows: function(result) {

        if ($(".subscription-mgmt-table").length == 0) {
            $("#divSubscriptionManagement").find(".description")
                .after($(document.createElement("table")).addClass("subscription-mgmt-table")
            );
            $(".subscription-mgmt-empty").hide();
        }
        else {
            $(".subscription-mgmt-table").find("tr").remove();
        }

        for (var i in result) {
            $(".subscription-mgmt-table")
            .append(
                $(document.createElement("tr")).addClass("subscription-mgmt-row")
                .append(
                    $(document.createElement("td"))
                    .append(
                        $(document.createElement("div")).addClass("subscription-name-container")
                        .append(
                            document.createTextNode(result[i].SubscriptionName)
                        )
                    )
                )
                .append(
                    $(document.createElement("td")).addClass("subscription-link-container")
                    .append(
                        $(document.createElement("div"))
                        .append(
                            $(document.createElement("a"))
                            .attr("id", result[i].SubscriptionDetailId)
                            .attr("href", "javascript:void(0);")
                            .addClass("unsubscribe-link")
                            .click(function() {
                                modalDialog.deleteSubscription($(this).attr("id"), $(this).parent().parent().parent());
                            })
                            .append(
                                document.createTextNode("Unsubscribe")
                            )
                        )
                    )
                )
            );
        }
    },
    DeleteSubscriptionDetail_Deleted: function(result, row) {
        if ($(".subscription-mgmt-row").length == 1) {
            $(".subscription-mgmt-table").remove();
            $("#divSubscriptionManagement").find(".description")
                .after(
                    $(document.createElement("div"))
                    .addClass("subscription-mgmt-empty")
                    .append(
                        document.createTextNode("- No active subscriptions found -")
                    )
                );
        }
        $(row).remove();
    },
    SendConfirmationEmail_Sent: function(result) {
        $(".resend-tooltip-loading").hide();
        $(".resend-tooltip-header")
            .html("Your confirmation email has been resent")
            .show();
        $(".resend-tooltip-description")
            .html("Please check your inbox and follow the instructions to confirm you subscription.")
            .show();
    },
    AddSubscriptionDetail_Error: function(error) {
        $(".modal-loading").hide();
    },
    DeleteSubscriptionDetail_Error: function(error) {
    },
    SendConfirmationEmail_Error: function(error) {
        $(".resend-tooltip-loading").hide();
        $(".resend-tooltip-header")
            .html("Confirmation email failure.")
            .show();
        $(".resend-tooltip-description")
            .html("Please consult CouponTweet support if you feel that this is an error.")
            .show();
    }
}

function TweetModal() {

    this.Container;
    this.Overlay;
    this.Visible = false;

    this.ShowModal = function(width, height) {

        var modalWindow = this;
        this.Container.css(
                    {
                        "display": "block",
                        "width": width,
                        "height": height,
                        "top": this.GetPositionTop(height),
                        "left": this.GetPositionLeft(width)
                    }
                );
        this.Overlay.css(
                    {
                        "display": "block",
                        "height": $(document).height()
                    }
                );
        if ($.browser.msie && $.browser.version.substr(0, 1) < 7) {
            $(document).find("select").css("visibility", "hidden");
        }
        this.Visible = true;
    };

    this.HideModal = function() {

        this.Container.css("display", "none");
        this.Overlay.css("display", "none");

        if ($.browser.msie && $.browser.version.substr(0, 1) < 7) {
            $(document).find("select").css("visibility", "visible");
        }

        this.Visible = false;
    };

    this.GetPositionTop = function(height) {
        return (($(window).height() - height) / 2);
    };

    this.GetPositionLeft = function(width) {
        return (($(window).width() - width) / 2);
    };
}