﻿/*jslint bitwise: true, browser: true, eqeqeq: true, nomen: true, undef: true, white: true */
/*extern BLACKBAUD, $get, isIE, Sys, $addHandler, walkDom, getElementsByClassName */

BLACKBAUD.netcommunity.ECardPartDisplay = function(serverVars) {
    var sendCopyToSelf = false;

    function setRequiredFieldMarkerVisiblity(rootElement, visible) {
        if (rootElement) {
            var display = '';
            if (!visible) {
                display = 'none';
            }
            var elements = getElementsByClassName(rootElement, 'BBFormRequiredFieldMarker');
            for (var i = 0; i < elements.length; i++) {
                elements[i].style.display = display;
            }
        }
    }

    function sendCopyToSelfChanged() {
        setRequiredFieldMarkerVisiblity(serverVars.divSender, serverVars.chkSendCopyToSelf.checked);
    }

    function addRecipient(incrementCount) {
        if (serverVars.divRecipients) {
            var aborted = !walkDom(serverVars.divRecipients, function(element) {
                if (element.className === "DisplayNone") {
                    element.className = "";
                    return false;
                }
            });
            if (aborted) {
                var displayed = parseInt(serverVars.hidDisplayedRecipients.value, 10);
                if (incrementCount) {
                    displayed++;
                    serverVars.hidDisplayedRecipients.value = displayed;
                }

                if (displayed >= serverVars.maxRecipients) {
                    serverVars.lnkAddRecipient.style.display = "none";
                }
            }
        }
    }
    this.addRecipient = addRecipient;

    function startup() {
        if (serverVars.chkSendCopyToSelf) {
            $addHandler(serverVars.chkSendCopyToSelf, "click", sendCopyToSelfChanged);
            sendCopyToSelfChanged();
        }

        //msb CR302593-061108 need to add as many recipients as before.  Also, don't increment the count for these initialization ones
        //or issues occur with the previous and next button.
        if (serverVars.hidDisplayedRecipients) {
            var i;
            var numRecToAdd = parseInt(serverVars.hidDisplayedRecipients.value, 10);
            for (i = 0; i < numRecToAdd; i++) {
                addRecipient(false);
            }
        }
    }

    function templateClick(templateID, setFocus, postback) {
        // unselect the old one
        if (serverVars.hidSelectedTemplate && serverVars.hidSelectedTemplate.value) {
            $get("rb" + serverVars.hidSelectedTemplate.value).checked = false;
        }

        // select the new one
        if (templateID && serverVars.hidSelectedTemplate) {
            serverVars.hidSelectedTemplate.value = templateID;
            var rb = $get("rb" + serverVars.hidSelectedTemplate.value);
            rb.checked = true;
            if (setFocus === true) {
                try {
                    rb.focus();
                }
                catch (e) {
                }
            }

            //CR319697-051909 GregWa
            //The only way to cause an UpdatePanel to fire off on a Hidden Field is through a __doPostBack
            //This would cause an endless loop otherwise as the initial load has to check the radio button,
            //so we make sure it is set to false for the RegisterStartupScript in SetEcardTemplate
            if (postback) {
                __doPostBack(serverVars.hidSelectedTemplate.id, '');
            }
        }
    }
    this.templateClick = templateClick;

    function popup(url) {
        var win = window.open(url, "Preview", "menubar=yes,toolbar=no,location=no,resizable=yes,scrollbars=yes,status=no,height=500,width=600", false);
        if (!win) {
            alert(serverVars.popupBlocked);
        }
    }
    this.popup = popup;

    function enableSendCopyToSelf(sendCopyEnabled) {
        if (sendCopyEnabled) {
            serverVars.chkSendCopyToSelf.disabled = false;
            serverVars.chkSendCopyToSelf.checked = sendCopyToSelf;
        }
        else {
            sendCopyToSelf = serverVars.chkSendCopyToSelf.checked;
            serverVars.chkSendCopyToSelf.disabled = true;
            serverVars.chkSendCopyToSelf.checked = false;
        }
        sendCopyToSelfChanged();
        setRequiredFieldMarkerVisiblity(serverVars.divRecipients, sendCopyEnabled);
    }
    this.enableSendCopyToSelf = enableSendCopyToSelf;

    startup();
};

////////////////////////////////////////////
// End of script
if (typeof(Sys) !== 'undefined')
{
    Sys.Application.notifyScriptLoaded();
}
////////////////////////////////////////////
// Do not add any code below this
////////////////////////////////////////////

