﻿(function ($) {

    function trackUsage() {
        if (typeof dcsMultiTrack === "function") {
            // Clear out custom properties
            DCS = {};
            DCSext = {};
            WT = {};
            var dcsuri = "/JobSearch/JobsByEmailSetupSubmit.aspx";
            var dcssip = window.location.hostname;
            var dcsref = window.location.href;
            var dcsqry = window.location.search;
            var dcsvid = $("#memberId").val();
            if ($("#isNewUser").val() == "True")
              var  newEmail = 1;
            //Clear out multitrack parameters to prevent double counting
            dcsMultiTrack("DCSext.JBESign", "1",
                "DCS.dcsqry", dcsqry, "DCS.dcsref", dcsref, "DCS.dcssip", dcssip, "DCS.dcsuri", dcsuri,
                "WT.dcsvid", dcsvid, "WT.ti", "Totaljobs.com - Jobs by Email confirmation", "DCSext.NewEmailCaptured", newEmail);
        }
    }

    function replaceExistingSubmitButtonWithStylableButton($jbeSetup, $form) {
        var $existingSubmitButton = $jbeSetup.find(":submit").eq(0)
            .click(function (ev) {
                return submitForm(ev, $jbeSetup, $form);
            });

        var $submitButton = $("<a></a>")
            .attr("href", "#")
            .addClass("jbe-setup-button")
            .addClass("jbe-setup-button-close")
            .insertBefore($existingSubmitButton)
            .click(function (ev) {
                $existingSubmitButton.click();
            });

        $("<span></span>").text($existingSubmitButton.val()).appendTo($submitButton);

        $existingSubmitButton.hide();
    }

    function showResponse($jbeSetup, response, succeeded) {
        $(".jbe-setup-dialog").addClass(succeeded ?
                "jbe-setup-success-dialog" :
                "jbe-setup-failure-dialog");
        $jbeSetup.html(response);
        $(".jbe-setup-button-close").click(function () {
            $jbeSetup.dialog("close");
            return false;
        });
        if (succeeded) {
            trackUsage();
        }
    }

    function submitRequest(ev, $jbeSetup, $form) {
        $("input[name=__EVENTTARGET]").val(ev.target.name.replace("$", ":"));
        var postData = $form.serialize();
        $.ajax({
            type: "POST",
            url: $form.attr("action"),
            data: postData,
            success: function (data) {
                var succeedPattern = /jbe-setup-success/ig;
                var succeeded = succeedPattern.test(data);
                showResponse($jbeSetup, data, succeeded);
            }
        });
    }

    function setupMoreInfo() {
        var $moreInfo = $(".jbe-setup-more-info").hide();
        var $moreInfoLink = $(".jbe-setup-more-info-link");
        $moreInfoLink.toggle(
            function (ev) {
                $moreInfo.slideDown("fast", function () {
                    $moreInfoLink.addClass("expanded");
                });
                return false;
            },
            function (ev) {
                $moreInfo.slideUp("fast", function () {
                    $moreInfoLink.removeClass("expanded");
                });
                return false;
            });
    }

    function submitForm(ev, $jbeSetup, $form) {
        ev.preventDefault();
        if (!window.Page_ClientValidate || window.Page_ClientValidate("jbeSetup")) {
            submitRequest(ev, $jbeSetup, $form);
        }
        return false;
    }

    $(document).ready(function () {

        var $form = $("#frmMain");

        var $jbeSetup = $(".jbe-setup").dialog({
            width: 420,
            height: "auto",
            autoOpen: false,
            modal: true,
            dialogClass: "jbe-setup-dialog"
        }).show();

        // reparent dialog back to asp.net form
        $jbeSetup.parent().appendTo($form);

        $(".jbe-setup-link").click(function (ev) {
            $jbeSetup.dialog("open");
            return false;
        });

        replaceExistingSubmitButtonWithStylableButton($jbeSetup, $form);

        setupMoreInfo();
    });

})(jQuery);
