﻿
/// <reference path="../AgilityData.js" />


Agility.RegisterNamespace("Subaru.Contest");

(function(Contest) {

    var InfoDialogID = "";
    var InfoDialog = null;

    var pnlContestEntryFormPopupID = "";
    var pnlContestEntryFormPopup = null;
    var ContestSubmissionConfirmationDialog = null;

    var ContentReferenceName = "";
    var isInitialized = false;
    var SignedForContest = false;

    Contest.OnInit = function(pnlContestInfoID, referenceName, contestEntryFormPopupID, signedForContest) {

        InfoDialogID = pnlContestInfoID;
        InfoDialog = $("#" + InfoDialogID).dialog({
            autoOpen: false,
            modal: true,
            closeText: 'hide',
            dialogClass: 'ContestInfoDialog',
            title: "",
            resizable: false,
            close: function() {
                _removeContestHash();
            }
        });
        $("#" + InfoDialogID + " div.ContestInfo").show();

        pnlContestEntryFormPopupID = contestEntryFormPopupID;
        pnlContestEntryFormPopup = $("#" + pnlContestEntryFormPopupID).dialog({
            autoOpen: false,
            modal: true,
            closeText: 'hide',
            dialogClass: 'ContestEntryFormDialog',
            title: "",
            resizable: false,
            close: function() {
                $("div.ui-datepicker").hide();
            }
        });

        ContestSubmissionConfirmationDialog = $("#pnlContestSubmissionConfirmation").dialog({
            autoOpen: false,
            modal: true,
            closeText: 'hide',
            dialogClass: 'ForgotPasswordDialog Confirmation2',
            title: "",
            resizable: false,
            close: function() {
                location.hash = "#";
            }
        });

        ContentReferenceName = referenceName;
        SignedForContest = signedForContest;

        if (Contest.ContestOpen()) {
            _removeContestHash();
            Contest.ShowInfoDialog();
        }
    };

    Contest.ShowInfoDialog = function(sender) {
        Subaru.AgilityData.LoadContentItem(ContentReferenceName, Contest.ShowInfoDialogCallback);
    };

    Contest.ShowInfoDialogCallback = function(data) {

        if (!isInitialized) {
            var GetOutMoreandWIN = $("#" + InfoDialogID + " div.GetOutMoreandWIN > *");

            GetOutMoreandWIN.eq(0).html(Subaru.AgilityData.FindContentItemProperty(data, "GetOutMoreandWINLabel"));
            GetOutMoreandWIN.eq(1).html(Subaru.AgilityData.FindContentItemProperty(data, "GetOutMoreDescription"));
            GetOutMoreandWIN.eq(2).html(Subaru.AgilityData.FindContentItemProperty(data, "Prize1"));
            GetOutMoreandWIN.eq(3).html(Subaru.AgilityData.FindContentItemProperty(data, "Prize2"));
            GetOutMoreandWIN.eq(4).html(Subaru.AgilityData.FindContentItemProperty(data, "Prize3"));
        }

        var HowToEnter = $("#" + InfoDialogID + " div.HowToEnter > *");

        var button = HowToEnter.eq(3);
        button.unbind('click');

        if (!SignedForContest) {
            if (!isInitialized) {
                HowToEnter.eq(0).html(Subaru.AgilityData.FindContentItemProperty(data, "HowToEnterLabel"));
            }

            var isAuthenticated = Subaru.ContextUtil.IsAuthenticated();
            if (isAuthenticated) {
                HowToEnter.eq(1).html(Subaru.AgilityData.FindContentItemProperty(data, "HowToEnterDescription"));
                button.attr("src", Subaru.AgilityData.FindContentItemProperty(data, "EnterNowButtonImage"));
                button.click(function() {
                    _showContestEntryDialog();
                });
            }
            else {
                HowToEnter.eq(1).html(Subaru.AgilityData.FindContentItemProperty(data, "RegisterNowDescription"));
                button.attr("src", Subaru.AgilityData.FindContentItemProperty(data, "RegisterNowButtonImage"));
                button.click(function() {
                    _setContestHash();
                    Subaru.Controls.Login.OnPopupCreateProfile(this);
                });
            }
        }
        else {
            HowToEnter.eq(0).hide();
            HowToEnter.eq(1).html(Subaru.AgilityData.FindContentItemProperty(data, "AlreadyRegisteredMessage"));
            button.hide();
        }

        isInitialized = true;
        InfoDialog.dialog("open");

        if (isAuthenticated && Contest.ContestOpen() && !SignedForContest) {
            //Open the Contest entry form right away
            _showContestEntryDialog();
            _removeContestHash();
        }
    };

    function _showContestEntryDialog() {

        pnlContestEntryFormPopup.dialog("open");
        setTimeout(function() {
            $(window).resize();
        }, 100);

        $("#" + pnlContestEntryFormPopupID).html('<div class="Spinner"></div>');

        var d = new Date();
        var _randomQueryString = d.getFullYear() + d.getMonth() + d.getDate() + d.getHours() + d.getMinutes() + d.getSeconds();

        var url = Agility.ResolveUrl("~/Dialogs/ContestEntry.aspx?r=" + _randomQueryString);

        $("#" + pnlContestEntryFormPopupID).load(url, function() {

            jQuery("#" + pnlContestEntryFormPopupID + " div.SubmitActivity").keydown(function(event) {
                if (event.keyCode == 13) {
                    if (event.originalTarget == null || event.originalTarget.nodeName.toLowerCase() != "textarea") {
                        _submitContestEntry();
                        return false;
                    }
                }
            });

            //            $("#txtBirthDate_ContestEntry").datepicker({
            //                yearRange: "-100:0",
            //                changeMonth: true, changeYear: true
            //            });


            var date = new Date();
            var ddlYear = $("#ddlYear");


            var yearData = "<option></option>";
            for (var i = date.getFullYear(); i > date.getFullYear() - 100; i--) {
                yearData += "<option>" + i + "</option>";
            }
            ddlYear.html(yearData);

            var ddlMonth = $("#ddlMonth");
            var monthData = "<option></option>";
            for (var i = 1; i <= 12; i++) {
                var text = i.toString();
                if (text.length == 1) {
                    text = "0" + text;
                }
                monthData += "<option value='" + i + "'>" + text + "</option>";
            }
            ddlMonth.html(monthData);

            var ddlDay = $("#ddlDay");
            var dayData = "<option></option>";
            for (var i = 1; i <= 31; i++) {
                var text = i.toString();
                if (text.length == 1) {
                    text = "0" + text;
                }

                dayData += "<option value='" + i + "'>" + text + "</option>";
            }
            ddlDay.html(dayData);



            var prizes = $("div[id$=pnlContestInfo] div.Prize");

            var radios = $("input[name=rbPrize_ContestEntry]", pnlContestEntryFormPopup);
            radios.eq(0).next().html(prizes.eq(0).text());
            radios.eq(1).next().html(prizes.eq(1).text());

            $("#" + pnlContestEntryFormPopupID + " .btnCancel").click(function() {
                _showContestEntryDialog();
            });
            $("#" + pnlContestEntryFormPopupID + " .btnSubmit").click(function() {
                _submitContestEntry();
            });

            $("#ddlSubmitingAs_ContestEntry").change(function() {
                var ddl = $(this);
                if (ddl.children(":selected").attr("group") == "true") {
                    $("#pnlForGroupsOnly_ContestEntry").show();
                    $("#pnlForIndividualsOnly_ContestEntry").hide();
                }
                else if (ddl.children(":selected").attr("group") == "false") {
                    $("#pnlForGroupsOnly_ContestEntry").hide();
                    $("#pnlForIndividualsOnly_ContestEntry").show();
                }
            });
        });
    };

    var EmailAddress_ContestEntrySubmitted = "";

    function _submitContestEntry() {

        var isValid = true;

        var txtFirstName_ContestEntry = $.trim($("#txtFirstName_ContestEntry").val());
        var txtLastName_ContestEntry = $.trim($("#txtLastName_ContestEntry").val());
        //var txtBirthDate_ContestEntry = $.trim($("#txtBirthDate_ContestEntry").val());
        var txtBirthDate_ContestEntry = $("#ddlMonth").val() + "/" + $("#ddlDay").val() + "/" + $("#ddlYear").val();


        var txtAddress_ContestEntry = $.trim($("#txtAddress_ContestEntry").val());
        var txtCity_ContestEntry = $.trim($("#txtCity_ContestEntry").val());

        var ddlProvince_ContestEntry = $("#ddlProvince_ContestEntry :selected").text();
        var txtPostalCode_ContestEntry = $.trim($("#txtPostalCode_ContestEntry").val());
        var txtPhoneNumber_ContestEntry = $.trim($("#txtPhoneNumber_ContestEntry").val());
        var txtEmailAddress_ContestEntry = $.trim($("#txtEmailAddress_ContestEntry").val());
        var ddlSubmitingAs_ContestEntry = $("#ddlSubmitingAs_ContestEntry").val();

        var txtOrganizationName_ContestEntry = $.trim($("#txtOrganizationName_ContestEntry").val());
        var txtWebsiteURL_ContestEntry = $.trim($("#txtWebsiteURL_ContestEntry").val());

        var cbPrize1_ContestEntry = false;
        var cbPrize2_ContestEntry = false;

        /*
        var rbPrize_ContestEntry = $("input[name='rbPrize_ContestEntry']:checked", pnlContestEntryFormPopup);
        if (rbPrize_ContestEntry.length > 0) {
        var sp = parseInt(rbPrize_ContestEntry.val());
        cbPrize1_ContestEntry = sp == 1;
        cbPrize2_ContestEntry = sp == 2;
        }*/

        var cbIAgree_ContestEntry = $("#cbIAgree_ContestEntry").is(':checked');

        //validate req fields

        $("#" + pnlContestEntryFormPopupID + " label[for='txtFirstName_ContestEntry']").parent("div").attr("className", "Label");
        if (txtFirstName_ContestEntry == "") {
            isValid = false;
            $("#" + pnlContestEntryFormPopupID + " label[for='txtFirstName_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }

        $("#" + pnlContestEntryFormPopupID + " label[for='txtLastName_ContestEntry']").parent("div").attr("className", "Label");
        if (txtLastName_ContestEntry == "") {
            isValid = false;
            $("#" + pnlContestEntryFormPopupID + " label[for='txtLastName_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }

        $("#" + pnlContestEntryFormPopupID + " label[for='txtBirthDate_ContestEntry']").parent("div").attr("className", "Label");
        if (txtBirthDate_ContestEntry == "" || txtBirthDate_ContestEntry.length < 8) {
            isValid = false;
            $("#" + pnlContestEntryFormPopupID + " label[for='txtBirthDate_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }

        $("#" + pnlContestEntryFormPopupID + " label[for='txtAddress_ContestEntry']").parent("div").attr("className", "Label");
        if (txtAddress_ContestEntry == "") {
            isValid = false;
            $("#" + pnlContestEntryFormPopupID + " label[for='txtAddress_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }

        $("#" + pnlContestEntryFormPopupID + " label[for='txtCity_ContestEntry']").parent("div").attr("className", "Label");
        if (txtCity_ContestEntry == "") {
            isValid = false;
            $("#" + pnlContestEntryFormPopupID + " label[for='txtCity_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }

        $("#" + pnlContestEntryFormPopupID + " label[for='ddlProvince_ContestEntry']").parent("div").attr("className", "Label");
        if (ddlProvince_ContestEntry == "") {
            isValid = false;
            $("#" + pnlContestEntryFormPopupID + " label[for='ddlProvince_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }

        $("#" + pnlContestEntryFormPopupID + " label[for='txtPostalCode_ContestEntry']").parent("div").attr("className", "Label");
        var rePostalCode = /^[a-ceghj-npr-tvxy]\d[a-ceghj-npr-tv-z]\s*\d[a-ceghj-npr-tv-z]\d$/i;
        if (txtPostalCode_ContestEntry == "" || !rePostalCode.test(txtPostalCode_ContestEntry)) {
            isValid = false;
            $("#" + pnlContestEntryFormPopupID + " label[for='txtPostalCode_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }

        $("#" + pnlContestEntryFormPopupID + " label[for='txtPhoneNumber_ContestEntry']").parent("div").attr("className", "Label");
        if (txtPhoneNumber_ContestEntry == "") {
            isValid = false;
            $("#" + pnlContestEntryFormPopupID + " label[for='txtPhoneNumber_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }

        $("#" + pnlContestEntryFormPopupID + " label[for='txtEmailAddress_ContestEntry']").parent("div").attr("className", "Label");
        if (txtEmailAddress_ContestEntry == "") {
            isValid = false;
            $("#" + pnlContestEntryFormPopupID + " label[for='txtEmailAddress_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }
        else {
            EmailAddress_ContestEntrySubmitted = txtEmailAddress_ContestEntry;
        }

        /*
        $("#" + pnlContestEntryFormPopupID + " label[for='ddlSubmitingAs_ContestEntry']").parent("div").attr("className", "Label");
        if (ddlSubmitingAs_ContestEntry == "") {
        isValid = false;
        $("#" + pnlContestEntryFormPopupID + " label[for='ddlSubmitingAs_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }
    
        var SubmittingAsGroup = $("#ddlSubmitingAs_ContestEntry :selected").attr("group") == "true";
        if (SubmittingAsGroup) {

            $("#" + pnlContestEntryFormPopupID + " label[for='txtOrganizationName_ContestEntry']").parent("div").attr("className", "Label");
        if (txtOrganizationName_ContestEntry == "") {
        isValid = false;
        $("#" + pnlContestEntryFormPopupID + " label[for='txtOrganizationName_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }

            cbPrize1_ContestEntry = false;
        cbPrize2_ContestEntry = false;
        }
        else {

            $("#" + pnlContestEntryFormPopupID + " label[for='rbPrize_ContestEntry']").parent("div").attr("className", "Label");
        if (!cbPrize1_ContestEntry && !cbPrize2_ContestEntry) {
        isValid = false;
        $("#" + pnlContestEntryFormPopupID + " label[for='rbPrize_ContestEntry']").parent("div").attr("className", "RequiredLabel");
        }

            txtOrganizationName_ContestEntry = "";
        txtWebsiteURL_ContestEntry = "";
        }
        */

        if (!cbIAgree_ContestEntry) {
            isValid = false;
        }

        if (!isValid) {
            $("#pnlBottomValidationMessage_ContestEntry").css("visibility", "visible").fadeOut("normal", function() {
                $(this).fadeIn("normal", function() {
                    $(this).fadeOut("normal", function() {
                        $(this).fadeIn("normal", function() {
                        });
                    });
                });
            });
            EmailAddress_ContestEntrySubmitted = "";
            return;
        }


        var SubmittingAsGroup = false;
        var txtOrganizationName_ContestEntry = "";
        var txtWebsiteURL_ContestEntry = "";
        var params = "{" +
            "'FirstName':'" + txtFirstName_ContestEntry + "'," +
            "'LastName':'" + txtLastName_ContestEntry + "'," +
            "'BirthDate':'" + txtBirthDate_ContestEntry + "'," +
            "'Address':'" + txtAddress_ContestEntry + "'," +
            "'City':'" + txtCity_ContestEntry + "'," +
            "'Province':'" + ddlProvince_ContestEntry + "'," +
            "'PostalCode':'" + txtPostalCode_ContestEntry + "'," +
            "'PhoneNumber':'" + txtPhoneNumber_ContestEntry + "'," +
            "'EmailAddress':'" + txtEmailAddress_ContestEntry + "'," +
            "'SubmittingAsGroup':" + SubmittingAsGroup + "," +
            "'OrganizationName':'" + txtOrganizationName_ContestEntry + "'," +
            "'WebsiteURL':'" + txtWebsiteURL_ContestEntry + "'," +
            "'Prize1Selected':" + cbPrize1_ContestEntry + "," +
            "'Prize2Selected':" + cbPrize2_ContestEntry +
        "}";

        $.ajax({
            type: "POST",
            url: Agility.ResolveUrl("~/Services/AgilityData.asmx") + '/SaveContestEntry',
            data: params,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(result) {
                if (result.d != null && result.d > 0) {
                    SignedForContest = true;
                    //Saved Ok
                    //alert($("#pnlThanksMessage_ContestEntry").text());
                    // Close all dialogs
                    Contest.CloseDialogs();
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert("An error occurred while saving the Contest Entry: " + XMLHttpRequest.responseText);
            },
            complete: function(XMLHttpRequest, textStatus) {
                //alert(XMLHttpRequest.status + ' ' + textStatus);
                //alert(XMLHttpRequest.responseText);
            }
        });
    };

    Contest.CloseDialogs = function() {
        InfoDialog.dialog("close");
        pnlContestEntryFormPopup.dialog("close");

        //Subaru.NewsletterSignup.SubmitActivity();

        _doContestSubmissionConfirmation();
    };

    function _doContestSubmissionConfirmation() {

        location.hash = "#Contest_Entry_Confirmation";

        //show the dialog
        $("#pnlContestSubmissionConfirmation").html('<div class="Spinner"></div>');

        ContestSubmissionConfirmationDialog.dialog("open");

        //load the dialog content...
        var d = new Date();
        var _randomQueryString = d.getFullYear() + d.getMonth() + d.getDate() + d.getHours() + d.getMinutes() + d.getSeconds();

        var url = Agility.ResolveUrl("~/Dialogs/ContestEntryConfirmation.aspx?r=" + _randomQueryString);
        $("#pnlContestSubmissionConfirmation").load(url,
            function(responseText, textStatus, XMLHttpRequest) {
                //alert(XMLHttpRequest.status + ' ' + textStatus);
                //alert(XMLHttpRequest.responseText);

                $("#pnlContestSubmissionConfirmation a:last").click(function(e) {
                    ContestSubmissionConfirmationDialog.dialog("close");
                    Subaru.NewsletterSignup.SubmitActivity();
                });

                if (EmailAddress_ContestEntrySubmitted.length > 0) {
                    _sendEmail($("#pnlContestSubmissionConfirmation input:first").val(), EmailAddress_ContestEntrySubmitted);
                }
            });
    }

    function _setContestHash() {
        if (location.hash != null && location.hash.indexOf("Contest") == -1) {
            if (location.hash == "" || location.hash == "#") {
                location.hash = "#Contest&";
            }
            else {
                location.hash = location.hash.replace("#", "Contest&");
            }
        }
    };

    function _removeContestHash() {
        if (window.location.hash.indexOf("Contest&") > -1) {
            window.location.hash = window.location.hash.replace("Contest&", "");
        }
        else if (window.location.hash.indexOf("Contest") > -1) {
            window.location.hash = window.location.hash.replace("Contest", "");
        }
    };

    Contest.ContestOpen = function() {
        return location.hash.indexOf("Contest") > -1;
    };

    function _sendEmail(referenceName, email) {
        jQuery.ajax({
            url: Agility.ResolveUrl("~/HTTPHandlers/SendConfirmation.ashx"),
            cache: false,
            data: {
                "email": email,
                "referenceName": referenceName
            },
            dataType: "text",
            complete: function(XMLHttpRequest, textStatus) {
                //alert(XMLHttpRequest.status + ' ' + textStatus);
                //alert(XMLHttpRequest.responseText);
            }
        });
    };

})(Subaru.Contest);
